(.module: [library [lux #* [abstract [equivalence (#+ Equivalence)] [monad (#+ do)]] [control ["<>" parser ["<.>" xml (#+ Parser)] ["<.>" text]]] [data [text ["%" format]] [format ["." xml (#+ XML)]]] [math [number ["." nat]]]]]) (type: #export Build Nat) (def: #export equivalence (Equivalence Build) nat.equivalence) (def: tag xml.Tag ["" "buildNumber"]) (def: #export format (-> Build XML) (|>> %.nat #xml.Text list (#xml.Node ..tag xml.attributes))) (def: #export parser (Parser Build) (<| (.node ..tag) (.then (<>.codec nat.decimal (.many .decimal))) .text))