summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Manuel Tomás <jtomas1815@gmail.com>2023-02-03 14:39:39 -0300
committerJuan Manuel Tomás <jtomas1815@gmail.com>2023-02-03 14:39:39 -0300
commitfdeb8e5de32f21a4a016b99165d248a7d8c3abde (patch)
treea98a034636d7188dfd0b8c3acde2ff69dfdc5af9
parente858144ddf1e50b3a390d33961945a9063d746f0 (diff)
downloadjson-fdeb8e5de32f21a4a016b99165d248a7d8c3abde.tar.gz
json-fdeb8e5de32f21a4a016b99165d248a7d8c3abde.zip
Change api and add object generation
-rw-r--r--generate.lisp9
-rw-r--r--json.asd5
-rw-r--r--load.lisp4
-rw-r--r--package.lisp7
-rw-r--r--save.lisp (renamed from dump.lisp)0
5 files changed, 18 insertions, 7 deletions
diff --git a/generate.lisp b/generate.lisp
new file mode 100644
index 0000000..de213a4
--- /dev/null
+++ b/generate.lisp
@@ -0,0 +1,9 @@
+(in-package #:json)
+
+(defmacro obj (&rest fields)
+ (let ((o (gensym))
+ (f (gensym)))
+ `(let ((,o (make-hash-table :test #'equal :size ,(length fields))))
+ (dolist (,f ',fields)
+ (setf (gethash (car ,f) ,o) (cadr ,f)))
+ ,o)))
diff --git a/json.asd b/json.asd
index d6d5f66..13436f6 100644
--- a/json.asd
+++ b/json.asd
@@ -4,5 +4,6 @@
#:monparser)
:components
((:file "package")
- (:file "dump")
- (:file "load")))
+ (:file "save")
+ (:file "load")
+ (:file "generate")))
diff --git a/load.lisp b/load.lisp
index c8c1194..c808774 100644
--- a/load.lisp
+++ b/load.lisp
@@ -113,8 +113,8 @@
(_ whitespace))
v))
-(defun parse-string (str)
+(defun from-string (str)
(run json-value (input:from-string str)))
-(defun parse-file (file)
+(defun from-file (file)
(run json-value (input:from-file file)))
diff --git a/package.lisp b/package.lisp
index 2c7c3a7..d4024f8 100644
--- a/package.lisp
+++ b/package.lisp
@@ -1,6 +1,7 @@
(defpackage #:json
(:use #:cl #:parser)
- (:export #:parse-string
- #:parse-file
+ (:export #:from-string
+ #:from-file
#:to-string
- #:to-file))
+ #:to-file
+ #:obj))
diff --git a/dump.lisp b/save.lisp
index d4f3fff..d4f3fff 100644
--- a/dump.lisp
+++ b/save.lisp