dtext#from_html: convert basic links to <url> syntax.

Convert

    <a href="https://www.example.com">https://www.example.com</a>

to

    <https://www.example.com>

instead of

    "https://www.example.com":[https://www.example.com]
This commit is contained in:
evazion
2020-05-29 15:17:29 -05:00
parent 9ca848d732
commit 206ac7dd9a
2 changed files with 19 additions and 1 deletions

View File

@@ -240,7 +240,14 @@ class DText
when "a"
title = from_html(element.inner_html, inline: true, &block).strip
url = element["href"]
%("#{title}":[#{url}]) if title.present? && url.present?
if title.blank? || url.blank?
""
elsif title == url
"<#{url}>"
else
%("#{title}":[#{url}])
end
when "img"
alt_text = element.attributes["title"] || element.attributes["alt"] || ""
src = element["src"]

View File

@@ -124,5 +124,16 @@ class DTextTest < ActiveSupport::TestCase
assert_equal(links, DText.parse_external_links(dtext))
end
end
context "#from_html" do
should "convert basic html to dtext" do
assert_equal("[b]abc[/b] [i]def[/i] [u]ghi[/u]", DText.from_html("<b>abc</b> <i>def</i> <u>ghi</u>"))
end
should "convert links to dtext" do
assert_equal('"example":[https://www.example.com]', DText.from_html('<a href="https://www.example.com">example</a>'))
assert_equal("<https://www.example.com>", DText.from_html('<a href="https://www.example.com">https://www.example.com</a>'))
end
end
end
end