]> gitweb.factorcode.org Git - factor.git/commitdiff
json.writer: make sure we make hex values two digits zero padded.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sun, 4 Jan 2015 17:37:03 +0000 (09:37 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sun, 4 Jan 2015 17:37:03 +0000 (09:37 -0800)
basis/json/writer/writer-tests.factor
basis/json/writer/writer.factor

index bceaa7b21a5ba8e3a27e2e6d871c73ee00169b33..5c90e4956fa741400c5dbe9e58f2f1239082b4e7 100644 (file)
@@ -71,3 +71,7 @@ TUPLE: person first-name age ;
 
 { "\"\\ud834\\udd1e\"" }
 [ t json-escape-unicode? [ "𝄞" >json ] with-variable ] unit-test
+
+{ "\"\\ud800\\udc01\"" }
+[ t json-escape-unicode? [ "𐀁" >json ] with-variable ] unit-test
+
index d91f3d781756a7da5e13c30e5567063c79dd9af6..f7bc35ec6eadf1f66be1d0b6618935b822a0be23 100644 (file)
@@ -44,12 +44,10 @@ M: json-null stream-json-print
 
 : json-print-generic-escape-surrogate-pair ( stream char -- stream )
     0x10000 - [ encode-first ] [ encode-second ] bi
-    "\\u%x%x\\u%x%x" sprintf over stream-write ;
+    "\\u%02x%02x\\u%02x%02x" sprintf over stream-write ;
 
 : json-print-generic-escape-bmp ( stream char -- stream )
-    "\\u" pick stream-write
-    >hex 4 CHAR: 0 pad-head
-    over stream-write ;
+    "\\u%04x" sprintf over stream-write ;
 
 : json-print-generic-escape ( stream char -- stream )
     dup 0xffff > [