Commit 236648fe authored by Mark Oteiza's avatar Mark Oteiza

Minor changes in json.el

* lisp/json.el (json-advance): Simpler docstring.
(json-read-escaped-char): Use xdigit subform in rx expression.
(json-read-string): Just use = for char comparison.
parent 1b4442be
......@@ -188,7 +188,7 @@ Unlike `reverse', this keeps the property-value pairs intact."
;; Reader utilities
(defsubst json-advance (&optional n)
"Skip past the following N characters."
"Advance N characters forward."
(forward-char n))
(defsubst json-peek ()
......@@ -381,13 +381,13 @@ representation will be parsed correctly."
;; this clause overlaps with the next one and therefore has to
;; come first.
((looking-at
(rx (group (any "Dd") (any "89ABab") (= 2 (any "0-9A-Fa-f")))
"\\u" (group (any "Dd") (any "C-Fc-f") (= 2 (any "0-9A-Fa-f")))))
(rx (group (any "Dd") (any "89ABab") (= 2 (any xdigit)))
"\\u" (group (any "Dd") (any "C-Fc-f") (= 2 (any xdigit)))))
(json-advance 10)
(json--decode-utf-16-surrogates
(string-to-number (match-string 1) 16)
(string-to-number (match-string 2) 16)))
((looking-at "[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]")
((looking-at (rx (= 4 xdigit)))
(let ((hex (match-string 0)))
(json-advance 4)
(string-to-number hex 16)))
......@@ -396,14 +396,14 @@ representation will be parsed correctly."
(defun json-read-string ()
"Read the JSON string at point."
(unless (char-equal (json-peek) ?\")
(unless (= (json-peek) ?\")
(signal 'json-string-format (list "doesn't start with `\"'!")))
;; Skip over the '"'
(json-advance)
(let ((characters '())
(char (json-peek)))
(while (not (char-equal char ?\"))
(push (if (char-equal char ?\\)
(while (not (= char ?\"))
(push (if (= char ?\\)
(json-read-escaped-char)
(json-pop))
characters)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment