From 22737b70bc9b1463260226c2997a8d9aeec095fe Mon Sep 17 00:00:00 2001 From: Liav A Date: Thu, 20 Jul 2023 14:43:39 +0300 Subject: [PATCH] LibMarkdown: Add render_for_raw_print methods to Node derived classes This method will be used by the package manager code to render an actual Port's name to raw text as it is stored as relative URL currently in the AvailablePorts.md file. --- Userland/Libraries/LibMarkdown/Text.cpp | 43 +++++++++++++++++++++++++ Userland/Libraries/LibMarkdown/Text.h | 9 ++++++ 2 files changed, 52 insertions(+) diff --git a/Userland/Libraries/LibMarkdown/Text.cpp b/Userland/Libraries/LibMarkdown/Text.cpp index e410772d06..7884daa0d8 100644 --- a/Userland/Libraries/LibMarkdown/Text.cpp +++ b/Userland/Libraries/LibMarkdown/Text.cpp @@ -34,6 +34,11 @@ void Text::EmphasisNode::render_for_terminal(StringBuilder& builder) const } } +void Text::EmphasisNode::render_for_raw_print(StringBuilder& builder) const +{ + child->render_for_raw_print(builder); +} + size_t Text::EmphasisNode::terminal_length() const { return child->terminal_length(); @@ -62,6 +67,11 @@ void Text::CodeNode::render_for_terminal(StringBuilder& builder) const builder.append("\e[22m"sv); } +void Text::CodeNode::render_for_raw_print(StringBuilder& builder) const +{ + code->render_for_raw_print(builder); +} + size_t Text::CodeNode::terminal_length() const { return code->terminal_length(); @@ -85,6 +95,10 @@ void Text::BreakNode::render_for_terminal(StringBuilder&) const { } +void Text::BreakNode::render_for_raw_print(StringBuilder&) const +{ +} + size_t Text::BreakNode::terminal_length() const { return 0; @@ -104,6 +118,11 @@ void Text::TextNode::render_to_html(StringBuilder& builder) const builder.append(escape_html_entities(text)); } +void Text::TextNode::render_for_raw_print(StringBuilder& builder) const +{ + builder.append(text); +} + void Text::TextNode::render_for_terminal(StringBuilder& builder) const { if (collapsible && (text == "\n" || text.is_whitespace())) { @@ -158,6 +177,11 @@ void Text::LinkNode::render_to_html(StringBuilder& builder) const } } +void Text::LinkNode::render_for_raw_print(StringBuilder& builder) const +{ + text->render_for_raw_print(builder); +} + void Text::LinkNode::render_for_terminal(StringBuilder& builder) const { bool is_linked = href.contains("://"sv); @@ -198,6 +222,13 @@ void Text::MultiNode::render_to_html(StringBuilder& builder) const } } +void Text::MultiNode::render_for_raw_print(StringBuilder& builder) const +{ + for (auto& child : children) { + child->render_for_raw_print(builder); + } +} + void Text::MultiNode::render_for_terminal(StringBuilder& builder) const { for (auto& child : children) { @@ -236,6 +267,11 @@ void Text::StrikeThroughNode::render_to_html(StringBuilder& builder) const builder.append(""sv); } +void Text::StrikeThroughNode::render_for_raw_print(StringBuilder& builder) const +{ + striked_text->render_for_raw_print(builder); +} + void Text::StrikeThroughNode::render_for_terminal(StringBuilder& builder) const { builder.append("\e[9m"sv); @@ -269,6 +305,13 @@ DeprecatedString Text::render_to_html() const return builder.to_deprecated_string().trim(" \n\t"sv); } +DeprecatedString Text::render_for_raw_print() const +{ + StringBuilder builder; + m_node->render_for_raw_print(builder); + return builder.to_deprecated_string().trim(" \n\t"sv); +} + DeprecatedString Text::render_for_terminal() const { StringBuilder builder; diff --git a/Userland/Libraries/LibMarkdown/Text.h b/Userland/Libraries/LibMarkdown/Text.h index e8c289e55c..40ee75198a 100644 --- a/Userland/Libraries/LibMarkdown/Text.h +++ b/Userland/Libraries/LibMarkdown/Text.h @@ -23,6 +23,7 @@ public: public: virtual void render_to_html(StringBuilder& builder) const = 0; virtual void render_for_terminal(StringBuilder& builder) const = 0; + virtual void render_for_raw_print(StringBuilder& builder) const = 0; virtual size_t terminal_length() const = 0; virtual RecursionDecision walk(Visitor&) const = 0; @@ -42,6 +43,7 @@ public: virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -57,6 +59,7 @@ public: virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -65,6 +68,7 @@ public: public: virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -88,6 +92,7 @@ public: virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -115,6 +120,7 @@ public: } virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -125,6 +131,7 @@ public: virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -140,6 +147,7 @@ public: virtual void render_to_html(StringBuilder& builder) const override; virtual void render_for_terminal(StringBuilder& builder) const override; + virtual void render_for_raw_print(StringBuilder& builder) const override; virtual size_t terminal_length() const override; virtual RecursionDecision walk(Visitor&) const override; }; @@ -148,6 +156,7 @@ public: DeprecatedString render_to_html() const; DeprecatedString render_for_terminal() const; + DeprecatedString render_for_raw_print() const; RecursionDecision walk(Visitor&) const; static Text parse(StringView);