diff options
Diffstat (limited to 'stdlib/source/lux/data/text/format.lux')
-rw-r--r-- | stdlib/source/lux/data/text/format.lux | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/stdlib/source/lux/data/text/format.lux b/stdlib/source/lux/data/text/format.lux deleted file mode 100644 index 6deb80074..000000000 --- a/stdlib/source/lux/data/text/format.lux +++ /dev/null @@ -1,134 +0,0 @@ -(.module: - [lux (#- list nat int rev type) - [abstract - [monad (#+ do)] - [functor - ["." contravariant]]] - [control - ["<>" parser - ["<c>" code (#+ Parser)]]] - [data - ["." bit] - ["." name] - ["." text] - [format - ["." xml] - ["." json]] - [collection - ["." list ("#\." monad)]]] - ["." time - ["." instant] - ["." duration] - ["." date] - ["." day] - ["." month]] - [math - ["." modular] - [number - ["." nat] - ["." int] - ["." rev] - ["." frac] - ["." ratio]]] - [macro - [syntax (#+ syntax:)] - ["." code] - ["." template]] - [meta - ["." location]] - ["." type]]) - -(type: #export (Format a) - {#.doc "A way to produce readable text from values."} - (-> a Text)) - -(implementation: #export functor - (contravariant.Functor Format) - - (def: (map f fb) - (|>> f fb))) - -(syntax: #export (format {fragments (<>.many <c>.any)}) - {#.doc (doc "Text interpolation." - (format "Static part " (text static) " does not match URI: " uri))} - (wrap (.list (` ($_ "lux text concat" (~+ fragments)))))) - -(template [<name> <type> <formatter>] - [(def: #export <name> - (Format <type>) - <formatter>)] - - [bit Bit (\ bit.codec encode)] - [nat Nat (\ nat.decimal encode)] - [int Int (\ int.decimal encode)] - [rev Rev (\ rev.decimal encode)] - [frac Frac (\ frac.decimal encode)] - [text Text text.format] - - [ratio ratio.Ratio (\ ratio.codec encode)] - [name Name (\ name.codec encode)] - [location Location location.format] - [code Code code.format] - [type Type type.format] - - [instant instant.Instant (\ instant.codec encode)] - [duration duration.Duration (\ duration.codec encode)] - [date date.Date (\ date.codec encode)] - [time time.Time (\ time.codec encode)] - [day day.Day (\ day.codec encode)] - [month month.Month (\ month.codec encode)] - - [xml xml.XML (\ xml.codec encode)] - [json json.JSON (\ json.codec encode)] - ) - -(template [<type> <format>,<codec>] - [(`` (template [<format> <codec>] - [(def: #export <format> - (Format <type>) - (\ <codec> encode))] - - (~~ (template.splice <format>,<codec>))))] - - [Nat - [[nat/2 nat.binary] - [nat/8 nat.octal] - [nat/10 nat.decimal] - [nat/16 nat.hex]]] - [Int - [[int/2 int.binary] - [int/8 int.octal] - [int/10 int.decimal] - [int/16 int.hex]]] - [Rev - [[rev/2 rev.binary] - [rev/8 rev.octal] - [rev/10 rev.decimal] - [rev/16 rev.hex]]] - [Frac - [[frac/2 frac.binary] - [frac/8 frac.octal] - [frac/10 frac.decimal] - [frac/16 frac.hex]]] - ) - -(def: #export (mod modular) - (All [m] (Format (modular.Mod m))) - (let [codec (modular.codec (modular.modulus modular))] - (\ codec encode modular))) - -(def: #export (list formatter) - (All [a] (-> (Format a) (Format (List a)))) - (|>> (list\map (|>> formatter (format " "))) - (text.join_with "") - (text.enclose ["(list" ")"]))) - -(def: #export (maybe format) - (All [a] (-> (Format a) (Format (Maybe a)))) - (function (_ value) - (case value - #.None - "#.None" - - (#.Some value) - (..format "(#.Some " (format value) ")")))) |