diff --git a/app/logical/d_text.rb b/app/logical/d_text.rb
index c50d43f2e..9d37d74ec 100644
--- a/app/logical/d_text.rb
+++ b/app/logical/d_text.rb
@@ -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"]
diff --git a/test/unit/d_text_test.rb b/test/unit/d_text_test.rb
index c381a5a32..0fc68062d 100644
--- a/test/unit/d_text_test.rb
+++ b/test/unit/d_text_test.rb
@@ -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("abc def ghi"))
+ end
+
+ should "convert links to dtext" do
+ assert_equal('"example":[https://www.example.com]', DText.from_html('example'))
+ assert_equal("", DText.from_html('https://www.example.com'))
+ end
+ end
end
end