mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 18:44:59 +00:00
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:
parent
597379e864
commit
aca01932bd
2 changed files with 10 additions and 14 deletions
|
@ -99,13 +99,13 @@ void Text::LinkNode::render_to_html(StringBuilder& builder) const
|
||||||
{
|
{
|
||||||
if (is_image) {
|
if (is_image) {
|
||||||
builder.append("<img src=\"");
|
builder.append("<img src=\"");
|
||||||
href->render_to_html(builder);
|
builder.append(escape_html_entities(href));
|
||||||
builder.append("\" alt=\"");
|
builder.append("\" alt=\"");
|
||||||
text->render_to_html(builder);
|
text->render_to_html(builder);
|
||||||
builder.append("\" >");
|
builder.append("\" >");
|
||||||
} else {
|
} else {
|
||||||
builder.append("<a href=\"");
|
builder.append("<a href=\"");
|
||||||
href->render_to_html(builder);
|
builder.append(escape_html_entities(href));
|
||||||
builder.append("\">");
|
builder.append("\">");
|
||||||
text->render_to_html(builder);
|
text->render_to_html(builder);
|
||||||
builder.append("</a>");
|
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
|
void Text::LinkNode::render_for_terminal(StringBuilder& builder) const
|
||||||
{
|
{
|
||||||
StringBuilder href_builder;
|
bool is_linked = href.contains("://");
|
||||||
href->render_for_terminal(href_builder);
|
|
||||||
String href_string = href_builder.build();
|
|
||||||
|
|
||||||
bool is_linked = href_string.contains("://");
|
|
||||||
if (is_linked) {
|
if (is_linked) {
|
||||||
builder.append("\e]8;;");
|
builder.append("\e]8;;");
|
||||||
builder.append(href_string);
|
builder.append(href);
|
||||||
builder.append("\e\\");
|
builder.append("\e\\");
|
||||||
}
|
}
|
||||||
|
|
||||||
text->render_for_terminal(builder);
|
text->render_for_terminal(builder);
|
||||||
|
|
||||||
if (is_linked) {
|
if (is_linked) {
|
||||||
builder.appendff(" <{}>", href_string);
|
builder.appendff(" <{}>", href);
|
||||||
builder.append("\033]8;;\033\\");
|
builder.append("\033]8;;\033\\");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -471,14 +467,14 @@ NonnullOwnPtr<Text::Node> Text::parse_link(Vector<Token>::ConstIterator& tokens)
|
||||||
auto separator = *tokens;
|
auto separator = *tokens;
|
||||||
VERIFY(separator == "](");
|
VERIFY(separator == "](");
|
||||||
|
|
||||||
auto address = make<MultiNode>();
|
StringBuilder address;
|
||||||
for (auto iterator = tokens + 1; !iterator.is_end(); ++iterator) {
|
for (auto iterator = tokens + 1; !iterator.is_end(); ++iterator) {
|
||||||
if (*iterator == ")") {
|
if (*iterator == ")") {
|
||||||
tokens = 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));
|
link_text->children.prepend(make<TextNode>(opening.data));
|
||||||
|
|
|
@ -88,9 +88,9 @@ public:
|
||||||
public:
|
public:
|
||||||
bool is_image;
|
bool is_image;
|
||||||
NonnullOwnPtr<Node> text;
|
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)
|
: is_image(is_image)
|
||||||
, text(move(text))
|
, text(move(text))
|
||||||
, href(move(href))
|
, href(move(href))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue