aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/artifact
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/program/aedifex/artifact/snapshot/build.lux (renamed from stdlib/source/program/aedifex/artifact/build.lux)0
-rw-r--r--stdlib/source/program/aedifex/artifact/snapshot/stamp.lux55
-rw-r--r--stdlib/source/program/aedifex/artifact/snapshot/time.lux45
-rw-r--r--stdlib/source/program/aedifex/artifact/time_stamp.lux35
4 files changed, 100 insertions, 35 deletions
diff --git a/stdlib/source/program/aedifex/artifact/build.lux b/stdlib/source/program/aedifex/artifact/snapshot/build.lux
index d9a8b729e..d9a8b729e 100644
--- a/stdlib/source/program/aedifex/artifact/build.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot/build.lux
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux
new file mode 100644
index 000000000..c1efcc8ee
--- /dev/null
+++ b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux
@@ -0,0 +1,55 @@
+(.module:
+ [lux #*
+ [abstract
+ [equivalence (#+ Equivalence)]]
+ [data
+ ["." product]
+ [format
+ [xml (#+ XML)]]]]
+ ["." // #_
+ ["#." time (#+ Time)]
+ ["#." build (#+ Build)]])
+
+(type: #export Stamp
+ {#time Time
+ #build Build})
+
+(def: #export equivalence
+ (Equivalence Stamp)
+ ($_ product.equivalence
+ //time.equivalence
+ //build.equivalence
+ ))
+
+(def: time_format
+ (-> Time XML)
+ (|>> //time.format
+ #xml.Text
+ list
+ (#xml.Node ..tag xml.attributes)))
+
+(def: #export (format (^slots [#time #build]))
+ (-> Stamp (List XML))
+ (list (..time_format time)
+ (//build.format build)))
+
+(def: <timestamp>
+ xml.Tag
+ ["" "timestamp"])
+
+## (exception: #export (mismatch {expected Instant} {actual Instant})
+## (exception.report
+## ["Expected" (%.instant expected)]
+## ["Actual" (%.instant actual)]))
+
+(def: time_parser
+ (Parser Time)
+ (do <>.monad
+ [_ (<xml>.node <timestamp>)]
+ (<text>.embed //time.parser
+ (<xml>.children <xml>.text))))
+
+(def: #export parser
+ (Parser Stamp)
+ (<>.and (<xml>.somewhere ..time_parser)
+ (<xml>.somewhere //build.parser)))
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/time.lux b/stdlib/source/program/aedifex/artifact/snapshot/time.lux
new file mode 100644
index 000000000..ea9bf3047
--- /dev/null
+++ b/stdlib/source/program/aedifex/artifact/snapshot/time.lux
@@ -0,0 +1,45 @@
+(.module:
+ [lux #*
+ [abstract
+ [equivalence (#+ Equivalence)]
+ [monad (#+ do)]]
+ [control
+ ["." exception (#+ exception:)]
+ ["<>" parser
+ ["<.>" text]
+ ["<.>" xml (#+ Parser)]]]
+ [data
+ [text
+ ["%" format]]
+ [format
+ ["." xml (#+ XML)]]]
+ [time
+ ["." instant (#+ Instant)]]]
+ ["." /// #_
+ [time
+ ["#." date]
+ ["#." time]]])
+
+(type: #export Time
+ Instant)
+
+(def: #export equivalence
+ (Equivalence Time)
+ instant.equivalence)
+
+(def: separator
+ ".")
+
+(def: #export (format value)
+ (%.Format Time)
+ (%.format (///date.format (instant.date value))
+ ..separator
+ (///time.format (instant.time value))))
+
+(def: #export parser
+ (<text>.Parser Time)
+ (do <>.monad
+ [date ///date.parser
+ _ (<text>.this ..separator)
+ time ///time.parser]
+ (wrap (instant.from_date_time date time))))
diff --git a/stdlib/source/program/aedifex/artifact/time_stamp.lux b/stdlib/source/program/aedifex/artifact/time_stamp.lux
deleted file mode 100644
index 0eab45a14..000000000
--- a/stdlib/source/program/aedifex/artifact/time_stamp.lux
+++ /dev/null
@@ -1,35 +0,0 @@
-(.module:
- [lux #*
- [abstract
- [monad (#+ do)]]
- [control
- ["<>" parser
- ["<.>" text (#+ Parser)]]]
- [data
- [text
- ["%" format]]]
- [time
- ["." instant (#+ Instant)]]]
- ["." / #_
- ["#." date]
- ["#." time]])
-
-(type: #export Time_Stamp
- Instant)
-
-(def: #export separator
- ".")
-
-(def: #export (format value)
- (%.Format Time_Stamp)
- (%.format (/date.format (instant.date value))
- ..separator
- (/time.format (instant.time value))))
-
-(def: #export parser
- (Parser Time_Stamp)
- (do <>.monad
- [date /date.parser
- _ (<text>.this ..separator)
- time /time.parser]
- (wrap (instant.from_date_time date time))))