(.module: [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 (^slots [#version #snapshot])) (%.Format Value) (case snapshot #///.Local version {#///.Remote stamp} (let [(^slots [#///stamp.time #///stamp.build]) stamp] (%.format (text.replaced ..snapshot (///time.format time) version) ..separator (%.nat build)))))