Introduce CharReaderBuilder::ecma404Mode (#1333)
* Introduce CharReaderBuilder::ecma404Mode
* Bump micro version
---------
Co-authored-by: Jordan Bayles <jophba@chromium.org>
Co-authored-by: Billy Donahue <BillyDonahue@users.noreply.github.com>
Co-authored-by: Jordan Bayles <bayles.jordan@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a37e726..f11425c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,11 +62,11 @@
# 2. ./include/json/version.h
# 3. ./CMakeLists.txt
# IMPORTANT: also update the PROJECT_SOVERSION!!
- VERSION 1.9.5 # <major>[.<minor>[.<patch>[.<tweak>]]]
+ VERSION 1.9.6 # <major>[.<minor>[.<patch>[.<tweak>]]]
LANGUAGES CXX)
message(STATUS "JsonCpp Version: ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
-set(PROJECT_SOVERSION 25)
+set(PROJECT_SOVERSION 26)
include(${CMAKE_CURRENT_SOURCE_DIR}/include/PreventInSourceBuilds.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/include/PreventInBuildInstalls.cmake)
diff --git a/include/json/reader.h b/include/json/reader.h
index 38b9360..d745378 100644
--- a/include/json/reader.h
+++ b/include/json/reader.h
@@ -385,6 +385,12 @@
* \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode
*/
static void strictMode(Json::Value* settings);
+ /** ECMA-404 mode.
+ * \pre 'settings' != NULL (but Json::null is fine)
+ * \remark Defaults:
+ * \snippet src/lib_json/json_reader.cpp CharReaderBuilderECMA404Mode
+ */
+ static void ecma404Mode(Json::Value* settings);
};
/** Consume entire stream and use its begin/end.
diff --git a/include/json/version.h b/include/json/version.h
index 9e95411..38faedf 100644
--- a/include/json/version.h
+++ b/include/json/version.h
@@ -9,10 +9,10 @@
// 3. /CMakeLists.txt
// IMPORTANT: also update the SOVERSION!!
-#define JSONCPP_VERSION_STRING "1.9.5"
+#define JSONCPP_VERSION_STRING "1.9.6"
#define JSONCPP_VERSION_MAJOR 1
#define JSONCPP_VERSION_MINOR 9
-#define JSONCPP_VERSION_PATCH 5
+#define JSONCPP_VERSION_PATCH 6
#define JSONCPP_VERSION_QUALIFIER
#define JSONCPP_VERSION_HEXA \
((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | \
diff --git a/meson.build b/meson.build
index e6ba08c..561b41c 100644
--- a/meson.build
+++ b/meson.build
@@ -9,7 +9,7 @@
# 2. /include/json/version.h
# 3. /CMakeLists.txt
# IMPORTANT: also update the SOVERSION!!
- version : '1.9.5',
+ version : '1.9.6',
default_options : [
'buildtype=release',
'cpp_std=c++11',
@@ -50,7 +50,7 @@
'src/lib_json/json_value.cpp',
'src/lib_json/json_writer.cpp',
]),
- soversion : 25,
+ soversion : 26,
install : true,
include_directories : jsoncpp_include_directories,
cpp_args: dll_export_flag)
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index 8ef29f0..10c97ae 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -1961,6 +1961,22 @@
(*settings)["skipBom"] = true;
//! [CharReaderBuilderDefaults]
}
+// static
+void CharReaderBuilder::ecma404Mode(Json::Value* settings) {
+ //! [CharReaderBuilderECMA404Mode]
+ (*settings)["allowComments"] = false;
+ (*settings)["allowTrailingCommas"] = false;
+ (*settings)["strictRoot"] = false;
+ (*settings)["allowDroppedNullPlaceholders"] = false;
+ (*settings)["allowNumericKeys"] = false;
+ (*settings)["allowSingleQuotes"] = false;
+ (*settings)["stackLimit"] = 1000;
+ (*settings)["failIfExtra"] = true;
+ (*settings)["rejectDupKeys"] = false;
+ (*settings)["allowSpecialFloats"] = false;
+ (*settings)["skipBom"] = false;
+ //! [CharReaderBuilderECMA404Mode]
+}
std::vector<CharReader::StructuredError>
CharReader::getStructuredErrors() const {