mirror of
https://github.com/nlohmann/json.git
synced 2025-07-31 10:24:23 +03:00
Merge pull request #2212 from nlohmann/comments
Add option to ignore comments in parse/accept functions
This commit is contained in:
@ -196,10 +196,12 @@ class basic_json
|
||||
static ::nlohmann::detail::parser<basic_json, InputAdapterType> parser(
|
||||
InputAdapterType adapter,
|
||||
detail::parser_callback_t<basic_json>cb = nullptr,
|
||||
bool allow_exceptions = true
|
||||
const bool allow_exceptions = true,
|
||||
const bool ignore_comments = false
|
||||
)
|
||||
{
|
||||
return ::nlohmann::detail::parser<basic_json, InputAdapterType>(std::move(adapter), std::move(cb), allow_exceptions);
|
||||
return ::nlohmann::detail::parser<basic_json, InputAdapterType>(std::move(adapter),
|
||||
std::move(cb), allow_exceptions, ignore_comments);
|
||||
}
|
||||
|
||||
using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
|
||||
@ -6591,6 +6593,9 @@ class basic_json
|
||||
(optional)
|
||||
@param[in] allow_exceptions whether to throw exceptions in case of a
|
||||
parse error (optional, true by default)
|
||||
@param[in] ignore_comments whether comments should be ignored and treated
|
||||
like whitespace (true) or yield a parse error (true); (optional, false by
|
||||
default)
|
||||
|
||||
@return deserialized JSON value; in case of a parse error and
|
||||
@a allow_exceptions set to `false`, the return value will be
|
||||
@ -6619,16 +6624,18 @@ class basic_json
|
||||
@liveexample{The example below demonstrates the `parse()` function reading
|
||||
from a contiguous container.,parse__contiguouscontainer__parser_callback_t}
|
||||
|
||||
@since version 2.0.3 (contiguous containers)
|
||||
@since version 2.0.3 (contiguous containers); version 3.9.0 allowed to
|
||||
ignore comments.
|
||||
*/
|
||||
template<typename InputType>
|
||||
JSON_HEDLEY_WARN_UNUSED_RESULT
|
||||
static basic_json parse(InputType&& i,
|
||||
const parser_callback_t cb = nullptr,
|
||||
const bool allow_exceptions = true)
|
||||
const bool allow_exceptions = true,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
basic_json result;
|
||||
parser(detail::input_adapter(std::forward<InputType>(i)), cb, allow_exceptions).parse(true, result);
|
||||
parser(detail::input_adapter(std::forward<InputType>(i)), cb, allow_exceptions, ignore_comments).parse(true, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -6645,6 +6652,9 @@ class basic_json
|
||||
(optional)
|
||||
@param[in] allow_exceptions whether to throw exceptions in case of a
|
||||
parse error (optional, true by default)
|
||||
@param[in] ignore_comments whether comments should be ignored and treated
|
||||
like whitespace (true) or yield a parse error (true); (optional, false by
|
||||
default)
|
||||
|
||||
@return deserialized JSON value; in case of a parse error and
|
||||
@a allow_exceptions set to `false`, the return value will be
|
||||
@ -6660,10 +6670,11 @@ class basic_json
|
||||
static basic_json parse(IteratorType first,
|
||||
IteratorType last,
|
||||
const parser_callback_t cb = nullptr,
|
||||
const bool allow_exceptions = true)
|
||||
const bool allow_exceptions = true,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
basic_json result;
|
||||
parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions).parse(true, result);
|
||||
parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -6671,10 +6682,11 @@ class basic_json
|
||||
JSON_HEDLEY_DEPRECATED_FOR(3.8.0, parse(ptr, ptr + len))
|
||||
static basic_json parse(detail::span_input_adapter&& i,
|
||||
const parser_callback_t cb = nullptr,
|
||||
const bool allow_exceptions = true)
|
||||
const bool allow_exceptions = true,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
basic_json result;
|
||||
parser(i.get(), cb, allow_exceptions).parse(true, result);
|
||||
parser(i.get(), cb, allow_exceptions, ignore_comments).parse(true, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -6694,6 +6706,9 @@ class basic_json
|
||||
iterators.
|
||||
|
||||
@param[in] i input to read from
|
||||
@param[in] ignore_comments whether comments should be ignored and treated
|
||||
like whitespace (true) or yield a parse error (true); (optional, false by
|
||||
default)
|
||||
|
||||
@return Whether the input read from @a i is valid JSON.
|
||||
|
||||
@ -6706,22 +6721,25 @@ class basic_json
|
||||
from a string.,accept__string}
|
||||
*/
|
||||
template<typename InputType>
|
||||
static bool accept(InputType&& i)
|
||||
static bool accept(InputType&& i,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
return parser(detail::input_adapter(std::forward<InputType>(i))).accept(true);
|
||||
return parser(detail::input_adapter(std::forward<InputType>(i)), nullptr, false, ignore_comments).accept(true);
|
||||
}
|
||||
|
||||
template<typename IteratorType>
|
||||
static bool accept(IteratorType first, IteratorType last)
|
||||
static bool accept(IteratorType first, IteratorType last,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
return parser(detail::input_adapter(std::move(first), std::move(last))).accept(true);
|
||||
return parser(detail::input_adapter(std::move(first), std::move(last)), nullptr, false, ignore_comments).accept(true);
|
||||
}
|
||||
|
||||
JSON_HEDLEY_WARN_UNUSED_RESULT
|
||||
JSON_HEDLEY_DEPRECATED_FOR(3.8.0, accept(ptr, ptr + len))
|
||||
static bool accept(detail::span_input_adapter&& i)
|
||||
static bool accept(detail::span_input_adapter&& i,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
return parser(i.get()).accept(true);
|
||||
return parser(i.get(), nullptr, false, ignore_comments).accept(true);
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -6741,6 +6759,9 @@ class basic_json
|
||||
@param[in,out] sax SAX event listener
|
||||
@param[in] format the format to parse (JSON, CBOR, MessagePack, or UBJSON)
|
||||
@param[in] strict whether the input has to be consumed completely
|
||||
@param[in] ignore_comments whether comments should be ignored and treated
|
||||
like whitespace (true) or yield a parse error (true); (optional, false by
|
||||
default); only applies to the JSON file format.
|
||||
|
||||
@return return value of the last processed SAX event
|
||||
|
||||
@ -6765,11 +6786,12 @@ class basic_json
|
||||
JSON_HEDLEY_NON_NULL(2)
|
||||
static bool sax_parse(InputType&& i, SAX* sax,
|
||||
input_format_t format = input_format_t::json,
|
||||
const bool strict = true)
|
||||
const bool strict = true,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
auto ia = detail::input_adapter(std::forward<InputType>(i));
|
||||
return format == input_format_t::json
|
||||
? parser(std::move(ia)).sax_parse(sax, strict)
|
||||
? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
|
||||
: detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
|
||||
}
|
||||
|
||||
@ -6777,11 +6799,12 @@ class basic_json
|
||||
JSON_HEDLEY_NON_NULL(3)
|
||||
static bool sax_parse(IteratorType first, IteratorType last, SAX* sax,
|
||||
input_format_t format = input_format_t::json,
|
||||
const bool strict = true)
|
||||
const bool strict = true,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
auto ia = detail::input_adapter(std::move(first), std::move(last));
|
||||
return format == input_format_t::json
|
||||
? parser(std::move(ia)).sax_parse(sax, strict)
|
||||
? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
|
||||
: detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
|
||||
}
|
||||
|
||||
@ -6790,11 +6813,12 @@ class basic_json
|
||||
JSON_HEDLEY_NON_NULL(2)
|
||||
static bool sax_parse(detail::span_input_adapter&& i, SAX* sax,
|
||||
input_format_t format = input_format_t::json,
|
||||
const bool strict = true)
|
||||
const bool strict = true,
|
||||
const bool ignore_comments = false)
|
||||
{
|
||||
auto ia = i.get();
|
||||
return format == input_format_t::json
|
||||
? parser(std::move(ia)).sax_parse(sax, strict)
|
||||
? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
|
||||
: detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user