(.require [library [lux (.except) [abstract [monad (.only do)]] [control ["<>" parser (.only)]] [data ["[0]" text ["%" \\format] ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat]]] [world ["[0]" time]]]] ["[0]" // ["[1]" date]]) (type .public Time time.Time) (def .public (format value) (%.Format Time) (let [(open "_[0]") (time.clock value)] (%.format (//.pad _#hour) (//.pad _#minute) (//.pad _#second)))) (def .public parser (.Parser Time) (do <>.monad [hour (<>.codec n.decimal (.exactly 2 .decimal)) minute (<>.codec n.decimal (.exactly 2 .decimal)) second (<>.codec n.decimal (.exactly 2 .decimal))] (<>.of_try (time.time [time.#hour hour time.#minute minute time.#second second time.#milli_second 0]))))