emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/parseedn 3e74411f89 20/32: Add print handler for #uuid and


From: ELPA Syncer
Subject: [nongnu] elpa/parseedn 3e74411f89 20/32: Add print handler for #uuid and #inst
Date: Tue, 28 Dec 2021 14:04:42 -0500 (EST)

branch: elpa/parseedn
commit 3e74411f8944d37ff4300b121b8b0d87771703e8
Author: Arne Brasseur <arne@arnebrasseur.net>
Commit: Arne Brasseur <arne@arnebrasseur.net>

    Add print handler for #uuid and #inst
    
    Since we parse these we should also print these.
    
    Printing inst up to the second and without timestamp, since that is the
    resolution we get from Emacs' date-to-time.
---
 CHANGELOG.md               |  2 ++
 parseedn.el                | 11 +++++++++++
 test/parseedn-test-data.el | 12 +++++++++++-
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e5ffcb138c..348305ad5a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
 
 ## Added
 
+- Added print handler for `#uuid` and `#inst`
+
 ## Fixed
 
 ## Changed
diff --git a/parseedn.el b/parseedn.el
index 986b13790b..786231a6ee 100644
--- a/parseedn.el
+++ b/parseedn.el
@@ -162,6 +162,13 @@ TAG-READERS is an optional association list.  For more 
information, see
       (insert ", ")
       (parseedn-print-plist next))))
 
+(defun parseedn-print-inst (time)
+  "Insert an inst value into the current buffer.
+
+Take an encode-time style value and print it as a timestamp
+deliniated by double quotes."
+  (insert (format-time-string "\"%Y-%m-%dT%T\"" time)))
+
 (defun parseedn-alist-p (list)
   "Non-null if and only if LIST is an alist with simple keys."
   (while (consp list)
@@ -224,6 +231,10 @@ DATUM can be any Emacs Lisp value."
       (error "Don't know how to print: %s" datum))
      ((eq 'edn-set (car datum))
       (insert "#{") (parseedn-print-seq (cadr datum)) (insert "}"))
+     ((eq 'edn-uuid (car datum))
+      (insert "#uuid ") (parseedn-print-seq (cdr datum)))
+     ((eq 'edn-inst (car datum))
+      (insert "#inst ") (parseedn-print-inst (cdr datum)))
      (t (insert "(") (parseedn-print-seq datum) (insert ")"))))
 
    (t (error "Don't know how to print: %s" datum))))
diff --git a/test/parseedn-test-data.el b/test/parseedn-test-data.el
index a862403030..5b029dc03f 100644
--- a/test/parseedn-test-data.el
+++ b/test/parseedn-test-data.el
@@ -340,6 +340,16 @@
        "booleans"
        (a-list
         :source "[nil true false]"
-        :edn '([nil t nil]))))
+        :edn '([nil t nil]))
+
+       "uuid"
+       (a-list
+        :source "#uuid \"c9c4eac2-7b23-4d62-a444-41a72dc09039\""
+        :edn '((edn-uuid "c9c4eac2-7b23-4d62-a444-41a72dc09039")))
+
+       "inst"
+       (a-list
+        :source "#inst \"2020-09-09T06:56:04\""
+        :edn '((edn-inst 24408 24676 )))))
 
 ;;; parseedn-test-data.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]