From 571d816dfd0b056a1649f5057867abbfa4421f5d Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 4 Feb 2021 01:30:34 -0400 Subject: Updates for Lua compiler. --- .../source/program/aedifex/artifact/versioning.lux | 149 +++++---------------- 1 file changed, 35 insertions(+), 114 deletions(-) (limited to 'stdlib/source/program/aedifex/artifact/versioning.lux') diff --git a/stdlib/source/program/aedifex/artifact/versioning.lux b/stdlib/source/program/aedifex/artifact/versioning.lux index df9f7dfa3..41b3179d3 100644 --- a/stdlib/source/program/aedifex/artifact/versioning.lux +++ b/stdlib/source/program/aedifex/artifact/versioning.lux @@ -1,5 +1,5 @@ (.module: - [lux (#- Name Type) + [lux #* [abstract [equivalence (#+ Equivalence)] [monad (#+ do)]] @@ -10,6 +10,7 @@ ["<.>" text]]] [data ["." product] + ["." maybe] ["." text ["%" format]] [format @@ -24,96 +25,50 @@ ["." date (#+ Date)] ["." year] ["." month]]] - ["." // (#+ Version) - [type (#+ Type)] - ["#." value (#+ Build Value)] - ["#." time_stamp (#+ Time_Stamp) - ["#/." date] - ["#/." time]]]) + ["." // #_ + ["#." time] + ["#." snapshot (#+ Snapshot) + ["#/." version (#+ Version)]]]) (type: #export Versioning - {#time_stamp Time_Stamp - #build Build - #snapshot (List Type)}) + {#snapshot Snapshot + #last_updated Instant + #versions (List Version)}) (def: #export init - {#time_stamp (instant.from_millis +0) - #build 0 - #snapshot (list)}) + {#snapshot #//snapshot.Local + #last_updated instant.epoch + #versions (list)}) (def: #export equivalence (Equivalence Versioning) ($_ product.equivalence + //snapshot.equivalence instant.equivalence - n.equivalence - (list.equivalence text.equivalence) + (list.equivalence //snapshot/version.equivalence) )) (template [ ] [(def: xml.Tag ["" ])] - [ "extension"] - [ "value"] - [ "updated"] - - [ "timestamp"] - [ "buildNumber"] [ "lastUpdated"] - [ "snapshotVersions"] - [ "snapshotVersion"] - - [ "snapshot"] - [ "versioning"] - ) - -(def: (instant_format value) - (%.Format Instant) - (%.format (//time_stamp/date.format (instant.date value)) - (//time_stamp/time.format (instant.time value)))) - -(template [
]
-  [(def: 
-     (->  XML)
-     (|>> 
 #xml.Text list (#xml.Node  xml.attributes)))]
-
-  [format_extension Type .. (|>)]
-  [format_value Value .. //value.format]
-  [format_updated Instant .. ..instant_format]
 
-  [format_time_stamp Instant .. //time_stamp.format]
-  [format_build_number Nat .. %.nat]
-  [format_last_updated Instant .. ..instant_format]
+  [ "versioning"]
   )
 
-(def: (format_snapshot value type)
-  (-> Value Type XML)
-  (<| (#xml.Node .. xml.attributes)
-      (list (..format_extension type)
-            (..format_value value)
-            (let [[version time_stamp build] value]
-              (..format_updated time_stamp)))))
+(def: format_last_updated
+  (-> Instant XML)
+  (|>> //time.format #xml.Text list (#xml.Node .. xml.attributes)))
 
-(def: #export (format version (^slots [#time_stamp #build #snapshot]))
-  (-> Version Versioning XML)
+(def: #export (format (^slots [#snapshot #last_updated #versions]))
+  (-> Versioning XML)
   (<| (#xml.Node .. xml.attributes)
-      (list (<| (#xml.Node .. xml.attributes)
-                (list (..format_time_stamp time_stamp)
-                      (..format_build_number build)))
-            (..format_last_updated time_stamp)
-            (<| (#xml.Node .. xml.attributes)
-                (list\map (..format_snapshot [version time_stamp build])
-                          snapshot)))))
-
-(exception: #export (time_stamp_mismatch {expected Time_Stamp} {actual Text})
-  (exception.report
-   ["Expected time-stamp" (instant_format expected)]
-   ["Actual time-stamp" actual]))
-
-(exception: #export (value_mismatch {expected Value} {actual Text})
-  (exception.report
-   ["Expected" (//value.format expected)]
-   ["Actual" actual]))
+      (list (//snapshot.format snapshot)
+            (..format_last_updated last_updated)
+            (|> versions
+                (list\map //snapshot/version.format)
+                (#xml.Node .. xml.attributes)))))
 
 (def: (sub tag parser)
   (All [a] (-> xml.Tag (Parser a) (Parser a)))
@@ -127,50 +82,16 @@
 
 (def: last_updated_parser
   (Parser Instant)
-  (.embed (do <>.monad
-                  [date //time_stamp/date.parser
-                   time //time_stamp/time.parser]
-                  (wrap (instant.from_date_time date time)))
+  (.embed //time.parser
                 (..text ..)))
 
-(def: time_stamp_parser
-  (Parser Time_Stamp)
-  (.embed //time_stamp.parser
-                (..text ..)))
-
-(def: build_parser
-  (Parser Build)
-  (.embed (<>.codec n.decimal
-                          (.many .decimal))
-                (..text ..)))
-
-(def: (snapshot_parser expected)
-  (-> Value (Parser Type))
-  (<| (..sub ..)
-      (do <>.monad
-        [#let [[version time_stamp build] expected]
-         updated (.somewhere (..text ..))
-         _ (<>.assert (exception.construct ..time_stamp_mismatch [time_stamp updated])
-                      (\ text.equivalence = (instant_format time_stamp) updated))
-         actual (.somewhere (..text ..))
-         _ (<>.assert (exception.construct ..value_mismatch [expected actual])
-                      (\ text.equivalence = (//value.format expected) actual))]
-        (.somewhere (..text ..)))))
-
-(def: #export (parser version)
-  (-> Version (Parser Versioning))
+(def: #export parser
+  (Parser Versioning)
   (<| (..sub ..)
-      (do <>.monad
-        [[time_stamp build] (<| .somewhere
-                                (..sub ..)
-                                (<>.and (.somewhere ..time_stamp_parser)
-                                        (.somewhere ..build_parser)))
-         last_updated (.somewhere ..last_updated_parser)
-         _ (<>.assert (exception.construct ..time_stamp_mismatch [time_stamp (instant_format last_updated)])
-                      (\ instant.equivalence = time_stamp last_updated))
-         snapshot (<| .somewhere
-                      (..sub ..)
-                      (<>.some (..snapshot_parser [version time_stamp build])))]
-        (wrap {#time_stamp time_stamp
-               #build build
-               #snapshot snapshot}))))
+      ($_ <>.and
+          (.somewhere //snapshot.parser)
+          (.somewhere ..last_updated_parser)
+          (<| .somewhere
+              (..sub ..)
+              (<>.some //snapshot/version.parser))
+          )))
-- 
cgit v1.2.3