aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yaml/fyamlcpp
diff options
context:
space:
mode:
authorinnokentii <innokentii@yandex-team.com>2023-04-13 17:48:21 +0300
committerinnokentii <innokentii@yandex-team.com>2023-04-13 17:48:21 +0300
commit15d3532f49b3662c9ca277db63052de97e7ed735 (patch)
tree851e2dd27c3736bb59970503ef571ac779c84fdd /library/cpp/yaml/fyamlcpp
parentedbc6cad1fc50b1237b88cd16a78fd44777a6601 (diff)
downloadydb-15d3532f49b3662c9ca277db63052de97e7ed735.tar.gz
Forward libfyaml node styles to fyamlcpp
forward libfyaml node styles to fyamlcpp
Diffstat (limited to 'library/cpp/yaml/fyamlcpp')
-rw-r--r--library/cpp/yaml/fyamlcpp/fyamlcpp.cpp24
-rw-r--r--library/cpp/yaml/fyamlcpp/fyamlcpp.h17
-rw-r--r--library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp10
3 files changed, 38 insertions, 13 deletions
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp b/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp
index b8d8b17596..9ddf434e97 100644
--- a/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp
+++ b/library/cpp/yaml/fyamlcpp/fyamlcpp.cpp
@@ -155,18 +155,6 @@ enum EEmitterCfgFlags {
Default = FYECF_DEFAULT,
};
-enum class ENodeStyle {
- Any = FYNS_ANY,
- Flow = FYNS_FLOW,
- Block = FYNS_BLOCK,
- Plain = FYNS_PLAIN,
- SingleQuoted = FYNS_SINGLE_QUOTED,
- DoubleQuoted = FYNS_DOUBLE_QUOTED,
- Literal = FYNS_LITERAL,
- Folded = FYNS_FOLDED,
- Alias = FYNS_ALIAS,
-};
-
enum class ENodeWalkFlags {
DontFollow = FYNWF_DONT_FOLLOW,
Follow = FYNWF_FOLLOW,
@@ -400,6 +388,16 @@ std::unique_ptr<char, void(*)(char*)> TNodeRef::EmitToCharArray() const {
return res;
}
+void TNodeRef::SetStyle(ENodeStyle style) {
+ ENSURE_NODE_NOT_EMPTY(Node_);
+ fy_node_set_style(Node_, (enum fy_node_style)style);
+}
+
+ENodeStyle TNodeRef::Style() const {
+ ENSURE_NODE_NOT_EMPTY(Node_);
+ return (ENodeStyle)fy_node_get_style(Node_);
+}
+
void TNodeRef::SetUserData(NDetail::IBasicUserData* data) {
ENSURE_NODE_NOT_EMPTY(Node_);
fy_node_set_meta(Node_, data);
@@ -819,7 +817,7 @@ std::unique_ptr<char, void(*)(char*)> TDocument::EmitToCharArray() const {
std::unique_ptr<char, void(*)(char*)> res(
fy_emit_document_to_string(
Document_.get(),
- (fy_emitter_cfg_flags)(FYECF_DEFAULT | FYECF_OUTPUT_COMMENTS)), &NDetail::FreeChar);
+ (fy_emitter_cfg_flags)(FYECF_DEFAULT | FYECF_MODE_PRETTY | FYECF_OUTPUT_COMMENTS)), &NDetail::FreeChar);
return res;
}
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp.h b/library/cpp/yaml/fyamlcpp/fyamlcpp.h
index bcf9362d73..231503c3a1 100644
--- a/library/cpp/yaml/fyamlcpp/fyamlcpp.h
+++ b/library/cpp/yaml/fyamlcpp/fyamlcpp.h
@@ -15,6 +15,7 @@ struct fy_document;
struct fy_diag;
struct fy_document_iterator;
struct fy_node_pair;
+extern "C" struct fy_node *fy_node_buildf(struct fy_document *fyd, const char *fmt, ...);
namespace NFyaml {
@@ -32,6 +33,18 @@ enum class ENodeType {
Mapping,
};
+enum class ENodeStyle {
+ Any = -1,
+ Flow,
+ Block,
+ Plain,
+ SingleQuoted,
+ DoubleQuoted,
+ Literal,
+ Folded,
+ Alias,
+};
+
namespace NDetail {
class IBasicUserData {
@@ -155,6 +168,10 @@ public:
std::unique_ptr<char, void(*)(char*)> EmitToCharArray() const;
+ void SetStyle(ENodeStyle style);
+
+ ENodeStyle Style() const;
+
protected:
fy_node* Node_ = nullptr;
diff --git a/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp b/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp
index ffe1d4368c..708554a708 100644
--- a/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp
+++ b/library/cpp/yaml/fyamlcpp/fyamlcpp_ut.cpp
@@ -11,6 +11,16 @@ Y_UNIT_TEST_SUITE(FYamlCpp) {
UNIT_ASSERT_EQUAL((int)NFyaml::ENodeType::Scalar, FYNT_SCALAR);
UNIT_ASSERT_EQUAL((int)NFyaml::ENodeType::Sequence, FYNT_SEQUENCE);
UNIT_ASSERT_EQUAL((int)NFyaml::ENodeType::Mapping, FYNT_MAPPING);
+
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Any, FYNS_ANY);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Flow, FYNS_FLOW);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Block, FYNS_BLOCK);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Plain, FYNS_PLAIN);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::SingleQuoted, FYNS_SINGLE_QUOTED);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::DoubleQuoted, FYNS_DOUBLE_QUOTED);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Literal, FYNS_LITERAL);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Folded, FYNS_FOLDED);
+ UNIT_ASSERT_EQUAL((int)NFyaml::ENodeStyle::Alias, FYNS_ALIAS);
}
Y_UNIT_TEST(ErrorHandling) {