(.using [library [lux "*" [abstract [equivalence {"+" Equivalence}]] [data ["[0]" product] ["[0]" text ["%" format]]]]] ["[0]" /// {"+" Snapshot} ["[1][0]" time] ["[1][0]" stamp]]) (type: .public Value (Record [#version Text #snapshot Snapshot])) (def: .public equivalence (Equivalence Value) ($_ product.equivalence text.equivalence ///.equivalence )) (def: separator "-") (def: .public snapshot "SNAPSHOT") (def: .public (format (open "/[0]")) (%.Format Value) (case /#snapshot {///.#Local} /#version {///.#Remote stamp} (let [(open "/[0]") stamp] (%.format (text.replaced ..snapshot (///time.format /#time) /#version) ..separator (%.nat /#build)))))