Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68992 - in trunk: boost/property_tree/detail libs/property_tree/test
From: sebastian.redl_at_[hidden]
Date: 2011-02-18 11:29:11


Author: cornedbee
Date: 2011-02-18 11:29:10 EST (Fri, 18 Feb 2011)
New Revision: 68992
URL: http://svn.boost.org/trac/boost/changeset/68992

Log:
Allow top-level array in PTree JSON parser, as requested in bug 4387.
Text files modified:
   trunk/boost/property_tree/detail/json_parser_read.hpp | 4 ++--
   trunk/libs/property_tree/test/test_json_parser.cpp | 9 +++++++++
   2 files changed, 11 insertions(+), 2 deletions(-)

Modified: trunk/boost/property_tree/detail/json_parser_read.hpp
==============================================================================
--- trunk/boost/property_tree/detail/json_parser_read.hpp (original)
+++ trunk/boost/property_tree/detail/json_parser_read.hpp 2011-02-18 11:29:10 EST (Fri, 18 Feb 2011)
@@ -184,7 +184,7 @@
                 using boost::spirit::classic::assertion;
 
                 // Assertions
- assertion<std::string> expect_object("expected object");
+ assertion<std::string> expect_root("expected object or array");
                 assertion<std::string> expect_eoi("expected end of input");
                 assertion<std::string> expect_objclose("expected ',' or '}'");
                 assertion<std::string> expect_arrclose("expected ',' or ']'");
@@ -195,7 +195,7 @@
 
                 // JSON grammar rules
                 root
- = expect_object(object)
+ = expect_root(object | array)
>> expect_eoi(end_p)
                         ;
                 

Modified: trunk/libs/property_tree/test/test_json_parser.cpp
==============================================================================
--- trunk/libs/property_tree/test/test_json_parser.cpp (original)
+++ trunk/libs/property_tree/test/test_json_parser.cpp 2011-02-18 11:29:10 EST (Fri, 18 Feb 2011)
@@ -249,6 +249,9 @@
 const char *error_data_4 =
     "{\n\"a\"\n}"; // No object
 
+const char *bug_data_pr4387 =
+ "[1, 2, 3]"; // Root array
+
 struct ReadFunc
 {
     template<class Ptree>
@@ -369,6 +372,12 @@
         "testerr4.json", NULL, "testerr4out.json", 3
     );
 
+ generic_parser_test_ok<Ptree, ReadFunc, WriteFunc>
+ (
+ ReadFunc(), WriteFunc(), bug_data_pr4387, NULL,
+ "testpr4387.json", NULL, "testpr4387out.json", 4, 3, 0
+ );
+
 }
 
 int test_main(int argc, char *argv[])


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk