LibMarkdown: Make href always a String

This already was the case in some sense, but made it very inconvenient
to access it.
This commit is contained in:
Ben Wiederhake 2021-10-03 21:39:34 +02:00 committed by Brian Gianforcaro
parent 597379e864
commit aca01932bd
Notes: sideshowbarker 2024-07-18 02:50:40 +09:00
2 changed files with 10 additions and 14 deletions
Userland/Libraries/LibMarkdown

View file

@ -99,13 +99,13 @@ void Text::LinkNode::render_to_html(StringBuilder& builder) const
{
if (is_image) {
builder.append("<img src=\"");
href->render_to_html(builder);
builder.append(escape_html_entities(href));
builder.append("\" alt=\"");
text->render_to_html(builder);
builder.append("\" >");
} else {
builder.append("<a href=\"");
href->render_to_html(builder);
builder.append(escape_html_entities(href));
builder.append("\">");
text->render_to_html(builder);
builder.append("</a>");
@ -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::Node> Text::parse_link(Vector<Token>::ConstIterator& tokens)
auto separator = *tokens;
VERIFY(separator == "](");
auto address = make<MultiNode>();
StringBuilder address;
for (auto iterator = tokens + 1; !iterator.is_end(); ++iterator) {
if (*iterator == ")") {
tokens = iterator;
return make<LinkNode>(is_image, move(link_text), move(address));
return make<LinkNode>(is_image, move(link_text), address.build());
}
address->children.append(make<TextNode>(iterator->data));
address.append(iterator->data);
}
link_text->children.prepend(make<TextNode>(opening.data));

View file

@ -88,9 +88,9 @@ public:
public:
bool is_image;
NonnullOwnPtr<Node> text;
NonnullOwnPtr<Node> href;
String href;
LinkNode(bool is_image, NonnullOwnPtr<Node> text, NonnullOwnPtr<Node> href)
LinkNode(bool is_image, NonnullOwnPtr<Node> text, String href)
: is_image(is_image)
, text(move(text))
, href(move(href))