diff --git a/src/config/config.h b/src/config/config.h index f24aa639..f4560c87 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -481,7 +481,8 @@ struct inheritable_diagram_options { "generate_condition_statements", false}; option> participants_order{"participants_order"}; option generate_message_comments{"generate_message_comments", false}; - option message_comment_width{"message_comment_width", 25}; + option message_comment_width{ + "message_comment_width", clanguml::util::kDefaultMessageCommentWidth}; option debug_mode{"debug_mode", false}; option generate_metadata{"generate_metadata", true}; diff --git a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc index 4dcdacd9..042ab1e3 100644 --- a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc @@ -110,8 +110,8 @@ void generator::generate_call(const message &m, nlohmann::json &parent) const msg["from"]["activity_id"] = std::to_string(from.value().id()); msg["to"]["activity_id"] = std::to_string(to.value().id()); msg["to"]["activity_name"] = to.value().full_name(false); - if (m.comment()) - msg["comment"] = m.comment().value(); + if (const auto &cmt = m.comment(); cmt.has_value()) + msg["comment"] = cmt.value(); if (from.value().type_name() == "method") { const auto &class_participant = diff --git a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc index 55458c48..a1b44af0 100644 --- a/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/mermaid/sequence_diagram_generator.cc @@ -80,17 +80,19 @@ void generator::generate_message_comment( if (comment_generated_from_note_decorators) return; - if (!config().generate_message_comments() || !m.comment()) - return; + if (auto &cmt = m.comment(); + config().generate_message_comments() && cmt.has_value()) { - ostr << indent(1) << "note over " << generate_alias(from.value()) << ": "; + ostr << indent(1) << "note over " << generate_alias(from.value()) + << ": "; - auto formatted_message = util::format_message_comment( - m.comment().value(), config().message_comment_width()); + auto formatted_message = util::format_message_comment( + cmt.value(), config().message_comment_width()); - util::replace_all(formatted_message, "\n", "
"); + util::replace_all(formatted_message, "\n", "
"); - ostr << formatted_message << '\n'; + ostr << formatted_message << '\n'; + } } void generator::generate_call(const message &m, std::ostream &ostr) const diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.h b/src/sequence_diagram/visitor/translation_unit_visitor.h index 4a7d7deb..1f0c688b 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.h +++ b/src/sequence_diagram/visitor/translation_unit_visitor.h @@ -512,7 +512,7 @@ private: std::optional get_expression_comment( const clang::SourceManager &sm, const clang::ASTContext &context, - const int64_t caller_id, const clang::Stmt *stmt); + int64_t caller_id, const clang::Stmt *stmt); // Reference to the output diagram model clanguml::sequence_diagram::model::diagram &diagram_; diff --git a/src/util/util.cc b/src/util/util.cc index d7e88ba8..d69261ff 100644 --- a/src/util/util.cc +++ b/src/util/util.cc @@ -382,19 +382,19 @@ std::string format_message_comment(const std::string &comment, unsigned width) return result; unsigned current_line_length{0}; - for (auto it = tokens.begin(); it != tokens.end(); it++) { + for (const auto &token : tokens) { if (current_line_length < width) { - result += *it; + result += token; result += ' '; } else { result.back() = '\n'; current_line_length = 0; - result += *it; + result += token; result += ' '; } - current_line_length += it->size() + 1; + current_line_length += token.size() + 1; } result.pop_back(); diff --git a/src/util/util.h b/src/util/util.h index 27fdd40f..5a21c86e 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -57,6 +57,8 @@ namespace clanguml::util { #define FILENAME_ \ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) +constexpr unsigned kDefaultMessageCommentWidth{25U}; + /** * @brief Left trim a string * @@ -426,6 +428,7 @@ std::string path_to_url(const std::filesystem::path &p); std::filesystem::path ensure_path_is_absolute(const std::filesystem::path &p, const std::filesystem::path &root = std::filesystem::current_path()); -std::string format_message_comment(const std::string &c, unsigned width = 25); +std::string format_message_comment( + const std::string &c, unsigned width = kDefaultMessageCommentWidth); } // namespace clanguml::util \ No newline at end of file