From 48d515ea6442c35befa5a948100143811a330d2c Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Thu, 3 Feb 2022 11:18:01 +0100 Subject: [PATCH] if pt::Space has FT::json type then let JSONExpression serialize it as json and not string --- src/jsonexpression.cpp | 34 ++++++++++++++++++++++++++++++++++ src/jsonexpression.h | 4 ++++ 2 files changed, 38 insertions(+) diff --git a/src/jsonexpression.cpp b/src/jsonexpression.cpp index 1c3d898..f2e67b2 100644 --- a/src/jsonexpression.cpp +++ b/src/jsonexpression.cpp @@ -99,6 +99,24 @@ void JSONExpression::after_field_value_string(const FT & field_type) } +void JSONExpression::before_field_value(const pt::Space &, const FT & field_type) +{ + if( field_type.is_space() ) + { + before_field_value_string(field_type); + } +} + +void JSONExpression::after_field_value(const pt::Space &, const FT & field_type) +{ + if( field_type.is_space() ) + { + after_field_value_string(field_type); + } +} + + + void JSONExpression::put_name_value_separator() { (*out_stream) << ':'; @@ -130,4 +148,20 @@ void JSONExpression::esc(char val, pt::TextStream & stream, const FT & field_typ } +void JSONExpression::esc(const pt::Space & space, pt::TextStream & stream, const FT & field_type) +{ + bool pretty_print = field_type.is_pretty_print(); + + if( field_type.is_space() ) + { + pt::WTextStream tmp_stream; + space.serialize_to_space_stream(tmp_stream, pretty_print); + BaseExpression::esc(tmp_stream, stream, field_type); + } + else + { + space.serialize_to_json_stream(stream, pretty_print); + } +} + } diff --git a/src/jsonexpression.h b/src/jsonexpression.h index ebc78ca..df91520 100644 --- a/src/jsonexpression.h +++ b/src/jsonexpression.h @@ -73,6 +73,10 @@ private: void before_field_value_string(const FT & field_type); void after_field_value_string(const FT & field_type); + void before_field_value(const pt::Space &, const FT & field_type); + void after_field_value(const pt::Space &, const FT & field_type); + + void esc(const pt::Space & space, pt::TextStream & stream, const FT & field_type); };