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