From aca01932bd7e83cea4e026e204b43c2849cf936c Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sun, 3 Oct 2021 21:39:34 +0200 Subject: [PATCH] LibMarkdown: Make href always a String This already was the case in some sense, but made it very inconvenient to access it. --- Userland/Libraries/LibMarkdown/Text.cpp | 20 ++++++++------------ Userland/Libraries/LibMarkdown/Text.h | 4 ++-- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/Userland/Libraries/LibMarkdown/Text.cpp b/Userland/Libraries/LibMarkdown/Text.cpp index 5631e8c929a..64a548fb1aa 100644 --- a/Userland/Libraries/LibMarkdown/Text.cpp +++ b/Userland/Libraries/LibMarkdown/Text.cpp @@ -99,13 +99,13 @@ void Text::LinkNode::render_to_html(StringBuilder& builder) const { if (is_image) { builder.append("render_to_html(builder); + builder.append(escape_html_entities(href)); builder.append("\" alt=\""); text->render_to_html(builder); builder.append("\" >"); } else { builder.append("render_to_html(builder); + builder.append(escape_html_entities(href)); builder.append("\">"); text->render_to_html(builder); builder.append(""); @@ -114,21 +114,17 @@ void Text::LinkNode::render_to_html(StringBuilder& builder) const void Text::LinkNode::render_for_terminal(StringBuilder& builder) const { - StringBuilder href_builder; - href->render_for_terminal(href_builder); - String href_string = href_builder.build(); - - bool is_linked = href_string.contains("://"); + bool is_linked = href.contains("://"); if (is_linked) { builder.append("\e]8;;"); - builder.append(href_string); + builder.append(href); builder.append("\e\\"); } text->render_for_terminal(builder); if (is_linked) { - builder.appendff(" <{}>", href_string); + builder.appendff(" <{}>", href); builder.append("\033]8;;\033\\"); } } @@ -471,14 +467,14 @@ NonnullOwnPtr Text::parse_link(Vector::ConstIterator& tokens) auto separator = *tokens; VERIFY(separator == "]("); - auto address = make(); + StringBuilder address; for (auto iterator = tokens + 1; !iterator.is_end(); ++iterator) { if (*iterator == ")") { tokens = iterator; - return make(is_image, move(link_text), move(address)); + return make(is_image, move(link_text), address.build()); } - address->children.append(make(iterator->data)); + address.append(iterator->data); } link_text->children.prepend(make(opening.data)); diff --git a/Userland/Libraries/LibMarkdown/Text.h b/Userland/Libraries/LibMarkdown/Text.h index 0c9a1eeff6c..bacfedb0e2c 100644 --- a/Userland/Libraries/LibMarkdown/Text.h +++ b/Userland/Libraries/LibMarkdown/Text.h @@ -88,9 +88,9 @@ public: public: bool is_image; NonnullOwnPtr text; - NonnullOwnPtr href; + String href; - LinkNode(bool is_image, NonnullOwnPtr text, NonnullOwnPtr href) + LinkNode(bool is_image, NonnullOwnPtr text, String href) : is_image(is_image) , text(move(text)) , href(move(href))