From: Lauro Moura Date: Thu, 1 Aug 2019 19:12:12 +0000 (+0200) Subject: csharp: Add a documentation_string generator X-Git-Tag: submit/tizen/20190805.083058~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9458d3e98e87076fc0f3c6cda562df6bbc00493b;p=platform%2Fupstream%2Fefl.git csharp: Add a documentation_string generator Summary: Escapes a single string, without leading `///` Depends on D9481 Reviewers: segfaultxavi, felipealmeida Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9482 --- diff --git a/src/bin/eolian_mono/eolian/mono/documentation.hh b/src/bin/eolian_mono/eolian/mono/documentation.hh index 93bc42e..588d0b6 100644 --- a/src/bin/eolian_mono/eolian/mono/documentation.hh +++ b/src/bin/eolian_mono/eolian/mono/documentation.hh @@ -567,6 +567,26 @@ documentation_generator as_generator(documentation_terminal) return documentation_generator(0); } +/// Escape a single string, HTML-escaping and converting the syntax +struct documentation_string_generator +{ + template + bool generate(OutputIterator sink, std::string const& text, Context const& context) const + { + std::string escaped; + if (!as_generator(html_escaped_string).generate(std::back_inserter(escaped), text, context)) + return false; + + auto options = context_find_tag(context); + auto state = context_find_tag(context).state; + if (!as_generator(string).generate(sink, documentation_generator::syntax_conversion(escaped, state, options.want_beta), context)) + return false; + + return true; + } + +} const documentation_string {}; + } // namespace eolian_mono @@ -578,6 +598,11 @@ template<> struct is_generator<::eolian_mono::documentation_generator> : std::true_type {}; template<> +struct is_eager_generator<::eolian_mono::documentation_string_generator> : std::true_type {}; +template<> +struct is_generator<::eolian_mono::documentation_string_generator> : std::true_type {}; + +template<> struct is_generator<::eolian_mono::documentation_terminal> : std::true_type {}; namespace type_traits { @@ -585,6 +610,8 @@ template<> struct attributes_needed : std::integral_constant {}; template<> struct attributes_needed : std::integral_constant {}; +template<> +struct attributes_needed : std::integral_constant {}; } } } } diff --git a/src/bin/eolian_mono/eolian/mono/struct_fields.hh b/src/bin/eolian_mono/eolian/mono/struct_fields.hh index 5b755a7..02b2cbe 100644 --- a/src/bin/eolian_mono/eolian/mono/struct_fields.hh +++ b/src/bin/eolian_mono/eolian/mono/struct_fields.hh @@ -42,7 +42,7 @@ struct field_argument_docs_generator template bool generate(OutputIterator sink, attributes::struct_field_def const& field, Context const& context) const { - if (!as_generator("/// " << string << "") + if (!as_generator("/// " << documentation_string << "") .generate(sink, std::make_tuple(name_helpers::to_field_name(field.name), field.documentation.summary), context)) return false; return true;