(.module: [lux (#- Name Type) [abstract [equivalence (#+ Equivalence)]] [data ["." product] ["." text ["%" format]] [format ["." xml]] [collection ["." list ("#\." functor)]]] [math [number ["n" nat]]] ["." time (#+ Time) ["." instant (#+ Instant)] ["." date (#+ Date)] ["." year] ["." month]]] [// (#+ Version) [type (#+ Type)] ["." time_stamp (#+ Time_Stamp)]]) (type: #export Build Nat) (type: #export Value {#version Version #time_stamp Time_Stamp #build Build}) (def: #export equivalence (Equivalence Value) ($_ product.equivalence text.equivalence instant.equivalence n.equivalence )) (def: separator "-") (def: snapshot "SNAPSHOT") (def: #export (format [version time_stamp build]) (%.Format Value) (%.format (text.replace_all ..snapshot (time_stamp.format time_stamp) version) ..separator (%.nat build)))