Add :ALWAYS-ITEM parsing-option
When toggled, /everything/ will be parsed as a JSON-LD object, even if it an invalid one.
This commit is contained in:
parent
8faeb1afd2
commit
ce557da89c
|
@ -309,6 +309,8 @@ If ALWAYS-OBJECT is non-nil, even invalid JSON-LD objects (which would normally
|
|||
parsed into hash-tables) will be parsed into CLOS objects."
|
||||
(let ((ctx (make-hash-table :test #'equal)) ; Parsed context
|
||||
(parsed (yason:parse str)))
|
||||
(when always-object
|
||||
(setf (gethash ".always-object" ctx) 't))
|
||||
(values (parse-item parsed ctx)
|
||||
ctx)))
|
||||
|
||||
|
@ -326,8 +328,11 @@ parsed into hash-tables) will be parsed into CLOS objects."
|
|||
(let* ((parsed-table (parse-table-inplace table ctx))
|
||||
(type (identify-json-type parsed-table ctx))
|
||||
(type-def (or (gethash type *json-types*)
|
||||
(gethash *default-json-type* *json-types*))))
|
||||
(parse-table-into-object parsed-table type-def ctx))))
|
||||
(gethash *default-json-type* *json-types*)))
|
||||
(valid-object (or type (gethash "@id" table))))
|
||||
(if (or valid-object (gethash ".always-object" ctx))
|
||||
(parse-table-into-object parsed-table type-def ctx)
|
||||
parsed-table))))
|
||||
|
||||
(defun parse-table-inplace (table ctx)
|
||||
"Expand a YASON-parsed JSON-LD node-object in TABLE. That is, replace all
|
||||
|
|
Ŝarĝante…
Reference in New Issue