diff --git a/include/nlohmann/detail/output/fancy_serializer.hpp b/include/nlohmann/detail/output/fancy_serializer.hpp index 7949db491..62798d5e4 100644 --- a/include/nlohmann/detail/output/fancy_serializer.hpp +++ b/include/nlohmann/detail/output/fancy_serializer.hpp @@ -109,8 +109,9 @@ class basic_fancy_serializer_stylizer return styles.back().second; } - fancy_serializer_style& register_style( - json_matcher_predicate p, + template + fancy_serializer_style& register_style_object_pred( + Predicate p, fancy_serializer_style style = fancy_serializer_style()) { auto wrapper = [p](const json_pointer_t&, const BasicJsonType & j) @@ -121,8 +122,9 @@ class basic_fancy_serializer_stylizer return styles.back().second; } - fancy_serializer_style& register_style( - context_matcher_predicate p, + template + fancy_serializer_style& register_style_context_pred( + Predicate p, fancy_serializer_style style = fancy_serializer_style()) { auto wrapper = [p](const json_pointer_t& c, const BasicJsonType&) @@ -137,12 +139,11 @@ class basic_fancy_serializer_stylizer string_t str, fancy_serializer_style style = fancy_serializer_style()) { - using pred = context_matcher_predicate; - return register_style(pred([str](const json_pointer_t& pointer) + return register_style_context_pred([str](const json_pointer_t& pointer) { return (pointer.cbegin() != pointer.cend()) && (*pointer.crbegin() == str); - }), + }, style); } diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index f94f42998..b888e1545 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -10914,8 +10914,9 @@ class basic_fancy_serializer_stylizer return styles.back().second; } - fancy_serializer_style& register_style( - json_matcher_predicate p, + template + fancy_serializer_style& register_style_object_pred( + Predicate p, fancy_serializer_style style = fancy_serializer_style()) { auto wrapper = [p](const json_pointer_t&, const BasicJsonType & j) @@ -10926,8 +10927,9 @@ class basic_fancy_serializer_stylizer return styles.back().second; } - fancy_serializer_style& register_style( - context_matcher_predicate p, + template + fancy_serializer_style& register_style_context_pred( + Predicate p, fancy_serializer_style style = fancy_serializer_style()) { auto wrapper = [p](const json_pointer_t& c, const BasicJsonType&) @@ -10942,12 +10944,11 @@ class basic_fancy_serializer_stylizer string_t str, fancy_serializer_style style = fancy_serializer_style()) { - using pred = context_matcher_predicate; - return register_style(pred([str](const json_pointer_t& pointer) + return register_style_context_pred([str](const json_pointer_t& pointer) { return (pointer.cbegin() != pointer.cend()) && (*pointer.crbegin() == str); - }), + }, style); } diff --git a/test/src/unit-fancy-serialization.cpp b/test/src/unit-fancy-serialization.cpp index 2c9954072..1ac0ec720 100644 --- a/test/src/unit-fancy-serialization.cpp +++ b/test/src/unit-fancy-serialization.cpp @@ -283,18 +283,16 @@ TEST_CASE("serialization") SECTION("example of more sophisticated context matcher") { - using pred = fancy_serializer_stylizer::context_matcher_predicate; - fancy_serializer_stylizer stylizer; stylizer.get_default_style() = fancy_serializer_style::preset_multiline; - stylizer.register_style( - pred([] (const json_pointer& context) + stylizer.register_style_context_pred( + [] (const json_pointer& context) { // Matches if context[-2] is "each elem on one line" return (context.cend() - context.cbegin() >= 2) && (*(context.cend() - 2) == "each elem on one line"); - }) + } ).space_after_comma = true; auto str = fancy_to_string( @@ -331,16 +329,14 @@ TEST_CASE("serialization") SECTION("example of more sophisticated json matcher") { - using pred = fancy_serializer_stylizer::json_matcher_predicate; - fancy_serializer_stylizer stylizer; stylizer.get_default_style() = fancy_serializer_style::preset_multiline; - stylizer.register_style( - pred([] (const json & j) + stylizer.register_style_object_pred( + [] (const json & j) { return j.type() == json::value_t::array; - }) + } ) = fancy_serializer_style::preset_one_line; auto str = fancy_to_string(