aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/licentia/license/notice.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/program/licentia/license/notice.lux30
1 files changed, 30 insertions, 0 deletions
diff --git a/stdlib/source/program/licentia/license/notice.lux b/stdlib/source/program/licentia/license/notice.lux
new file mode 100644
index 000000000..320dd4d7c
--- /dev/null
+++ b/stdlib/source/program/licentia/license/notice.lux
@@ -0,0 +1,30 @@
+(.module:
+ [lux #*
+ [data
+ ["." text
+ format]
+ [collection
+ [list ("list/." functor)]]]]
+ [//
+ ["//." time]
+ ["//." copyright]
+ ["_" term]
+ [//
+ ["$" document]]])
+
+(def: #export end-of-license
+ ($.sentence "END OF TERMS AND CONDITIONS"))
+
+(def: #export (copyright-holder holder)
+ (-> //copyright.Holder Text)
+ (let [(^slots [#//time.start #//time.end]) (get@ #//copyright.period holder)
+ single-year? (n/= start end)
+ period-section (if single-year?
+ (%n start)
+ (format (%n start) "-" (%n end)))]
+ (format "Copyright (C) " period-section " " (get@ #//copyright.name holder))))
+
+(def: #export copyright
+ (-> (List //copyright.Holder) Text)
+ (|>> (list/map ..copyright-holder)
+ (text.join-with text.new-line)))