diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/data/text/format.lux | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/stdlib/source/lux/data/text/format.lux b/stdlib/source/lux/data/text/format.lux index 335c120be..392e3ee42 100644 --- a/stdlib/source/lux/data/text/format.lux +++ b/stdlib/source/lux/data/text/format.lux @@ -1,7 +1,9 @@ (.module: [lux (#- list nat int rev type) [abstract - [monad (#+ do)]] + [monad (#+ do)] + [functor + ["." contravariant]]] [control ["p" parser ["s" code (#+ Parser)]]] @@ -31,15 +33,21 @@ [syntax (#+ syntax:)]] ["." type]]) +(type: #export (Format a) + {#.doc "A way to produce readable text from values."} + (-> a Text)) + +(structure: #export functor + (contravariant.Functor Format) + + (def: (map f fb) + (|>> f fb))) + (syntax: #export (format {fragments (p.many s.any)}) {#.doc (doc "Text interpolation." (format "Static part " (text static) " does not match URI: " uri))} (wrap (.list (` ($_ "lux text concat" (~+ fragments)))))) -(type: #export (Format a) - {#.doc "A way to produce readable text from values."} - (-> a Text)) - (template [<name> <type> <formatter>] [(def: #export <name> (Format <type>) @@ -60,8 +68,8 @@ [hex Nat (:: nat.hex encode)] [xml xml.XML (:: xml.codec encode)] [json json.JSON (:: json.codec encode)] - [instant instant.Instant instant.to-text] - [duration duration.Duration duration.encode] + [instant instant.Instant (:: instant.codec encode)] + [duration duration.Duration (:: duration.codec encode)] [date date.Date (:: date.codec encode)] [cursor Cursor .cursor-description] ) |