David Lutterkort fe2756
From 100a7b38222a63c6435a72b4974b55f39a28989e Mon Sep 17 00:00:00 2001
David Lutterkort fe2756
From: Lubomir Rintel <lubo.rintel@gooddata.com>
David Lutterkort fe2756
Date: Mon, 9 Jan 2012 19:24:41 +0100
David Lutterkort fe2756
Subject: [PATCH 2/2] Correctly parse empty object and arrays in JSON
David Lutterkort fe2756
David Lutterkort fe2756
Add a test case.
David Lutterkort fe2756
Fix from David Lutterkort <lutter@redhat.com>.
David Lutterkort fe2756
David Lutterkort fe2756
https://fedorahosted.org/augeas/ticket/248
David Lutterkort fe2756
---
David Lutterkort fe2756
 lenses/json.aug            |    4 ++--
David Lutterkort fe2756
 lenses/tests/test_json.aug |    5 +++++
David Lutterkort fe2756
 2 files changed, 7 insertions(+), 2 deletions(-)
David Lutterkort fe2756
David Lutterkort fe2756
diff --git a/lenses/json.aug b/lenses/json.aug
David Lutterkort fe2756
index 6ceab09..2645806 100644
David Lutterkort fe2756
--- a/lenses/json.aug
David Lutterkort fe2756
+++ b/lenses/json.aug
David Lutterkort fe2756
@@ -37,9 +37,9 @@ let const (r:regexp) = [ label "const" . store r . ws ]
David Lutterkort fe2756
 let value0 = str | number | const /true|false|null/
David Lutterkort fe2756
 
David Lutterkort fe2756
 let fix_value (value:lens) =
David Lutterkort fe2756
-  let array = [ label "array" . lbrack . Build.opt_list value comma . rbrack ] in
David Lutterkort fe2756
+  let array = [ label "array" . lbrack . (Build.opt_list value comma)? . rbrack ] in
David Lutterkort fe2756
   let pair = [ label "entry" . str_store . colon . value ] in
David Lutterkort fe2756
-  let obj = [ label "dict" . lbrace . Build.opt_list pair comma . rbrace ] in
David Lutterkort fe2756
+  let obj = [ label "dict" . lbrace . (Build.opt_list pair comma)? . rbrace ] in
David Lutterkort fe2756
   (str | number | obj | array | const /true|false|null/)
David Lutterkort fe2756
 
David Lutterkort fe2756
 (* Typecheck finitely deep nesting *)
David Lutterkort fe2756
diff --git a/lenses/tests/test_json.aug b/lenses/tests/test_json.aug
David Lutterkort fe2756
index d8b7fa8..aec7d4c 100644
David Lutterkort fe2756
--- a/lenses/tests/test_json.aug
David Lutterkort fe2756
+++ b/lenses/tests/test_json.aug
David Lutterkort fe2756
@@ -30,6 +30,11 @@ test lns get "{ \"0\": true, \"1\":false }" =
David Lutterkort fe2756
 test lns get "{\"menu\": \"entry one\"}" =
David Lutterkort fe2756
   { "dict" { "entry" = "menu" { "string" = "entry one" } } }
David Lutterkort fe2756
 
David Lutterkort fe2756
+test lns get "[ ]" =
David Lutterkort fe2756
+  { "array" }
David Lutterkort fe2756
+
David Lutterkort fe2756
+test lns get "{}" =
David Lutterkort fe2756
+  { "dict" }
David Lutterkort fe2756
 
David Lutterkort fe2756
 let s = "{\"menu\": {
David Lutterkort fe2756
   \"id\": \"file\",
David Lutterkort fe2756
-- 
David Lutterkort fe2756
1.7.7.5
David Lutterkort fe2756