aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/licentia/document.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/program/licentia/document.lux')
-rw-r--r--stdlib/source/program/licentia/document.lux47
1 files changed, 47 insertions, 0 deletions
diff --git a/stdlib/source/program/licentia/document.lux b/stdlib/source/program/licentia/document.lux
new file mode 100644
index 000000000..bb128807b
--- /dev/null
+++ b/stdlib/source/program/licentia/document.lux
@@ -0,0 +1,47 @@
+(.module:
+ [lux (#- or and)
+ [data
+ ["." text
+ format]
+ [collection
+ [list ("list/." functor)]]]])
+
+(def: #export (quote text)
+ (-> Text Text)
+ (format text.double-quote text text.double-quote))
+
+(def: #export (block content)
+ (-> Text Text)
+ (format content text.new-line text.new-line))
+
+(def: #export (plural singular)
+ (-> Text Text)
+ (format singular "(s)"))
+
+(def: #export (sentence content)
+ (-> Text Text)
+ (format content "."))
+
+(def: #export paragraph
+ (-> (List Text) Text)
+ (|>> (list/map ..sentence)
+ (text.join-with text.new-line)))
+
+(do-template [<name> <word>]
+ [(def: #export <name>
+ (-> (List Text) Text)
+ (text.join-with (format ", " <word> " ")))]
+
+ [or "or"]
+ [and "and"]
+ [and/or "and/or"]
+ )
+
+(type: #export Section
+ {#title Text
+ #content Text})
+
+(def: #export (section value)
+ (-> Section Text)
+ (format (block (get@ #title value))
+ (get@ #content value)))