logo

auto_linker

AutoLinker-shim, based on https://git.pleroma.social/pleroma/auto_linker git clone https://hacktivis.me/git/auto_linker.git
commit: f081e6b5537ea39c3f2aba80db04b070c9b8b73d
parent 95e8188490e97505c56636c1379ffdf036c1fdde
Author: Egor Kislitsyn <egor@kislitsyn.com>
Date:   Fri, 21 Jun 2019 17:12:11 +0700

Remove markdown links support

Diffstat:

MREADME.md3---
Mlib/auto_linker.ex7-------
Mlib/auto_linker/builder.ex18------------------
Mlib/auto_linker/parser.ex7-------
Mtest/auto_linker_test.exs17++---------------
Mtest/builder_test.exs7-------
6 files changed, 2 insertions(+), 57 deletions(-)

diff --git a/README.md b/README.md @@ -45,9 +45,6 @@ iex> AutoLinker.link("or at home on 555.555.5555", phone: true) iex> AutoLinker.link(", work (555) 555-5555", phone: true) ", work <a href=\"#\" class=\"phone-number\" data-phone=\"5555555555\">(555) 555-5555</a>" - -iex> AutoLinker.link("[Google Search](http://google.com)", markdown: true) -"<a href='http://google.com' class='auto-linker' target='_blank' rel='noopener noreferrer'>Google Search</a>" ``` See the [Docs](https://hexdocs.pm/auto_linker/) for more examples diff --git a/lib/auto_linker.ex b/lib/auto_linker.ex @@ -15,12 +15,6 @@ defmodule AutoLinker do iex> AutoLinker.link("google.com", new_window: false, rel: false, class: false) ~s(<a href="http://google.com">google.com</a>) - - iex> AutoLinker.link("[Google](http://google.com)", markdown: true, new_window: false, rel: false, class: false) - ~s(<a href='http://google.com'>Google</a>) - - iex> AutoLinker.link("[Google Search](http://google.com)", markdown: true) - ~s(<a href='http://google.com' class="auto-linker" target="_blank" rel="noopener noreferrer">Google Search</a>) """ import AutoLinker.Parser @@ -39,7 +33,6 @@ defmodule AutoLinker do * `exclude_class: false` - Set to a class name when you don't want urls auto linked in the html of the give class * `exclude_id: false` - Set to an element id when you don't want urls auto linked in the html of the give element * `exclude_patterns: ["```"]` - Don't link anything between the the pattern - * `markdown: false` - link markdown style links * `email: false` - link email links * `mention: false` - link @mentions (when `true`, requires `mention_prefix` or `mention_handler` options to be set) * `mention_prefix: nil` - a prefix to build a link for a mention (example: `https://example.com/user/`) diff --git a/lib/auto_linker/builder.ex b/lib/auto_linker/builder.ex @@ -17,14 +17,6 @@ defmodule AutoLinker.Builder do |> format_url(text, opts) end - def create_markdown_links(text, opts) do - [] - |> build_attrs(text, opts, :rel) - |> build_attrs(text, opts, :target) - |> build_attrs(text, opts, :class) - |> format_markdown(text, opts) - end - defp build_attrs(attrs, uri, %{rel: get_rel}, :rel) when is_function(get_rel, 1) do case get_rel.(uri) do nil -> attrs @@ -68,16 +60,6 @@ defmodule AutoLinker.Builder do |> Enum.join(" ") end - defp format_markdown(attrs, text, _opts) do - attrs = - case format_attrs(attrs) do - "" -> "" - attrs -> " " <> attrs - end - - Regex.replace(~r/\[(.+?)\]\((.+?)\)/, text, "<a href='\\2'#{attrs}>\\1</a>") - end - defp truncate(url, false), do: url defp truncate(url, len) when len < 3, do: url diff --git a/lib/auto_linker/parser.ex b/lib/auto_linker/parser.ex @@ -111,13 +111,6 @@ defmodule AutoLinker.Parser do |> do_parse(Map.delete(opts, :extra)) end - defp do_parse({text, user_acc}, %{markdown: true} = opts) do - text - |> Builder.create_markdown_links(opts) - |> (&{&1, user_acc}).() - |> do_parse(Map.delete(opts, :markdown)) - end - defp do_parse(input, %{email: true} = opts) do input |> do_parse(opts, {"", "", :parsing}, &check_and_link_email/3) diff --git a/test/auto_linker_test.exs b/test/auto_linker_test.exs @@ -12,32 +12,19 @@ defmodule AutoLinkerTest do "<a href=\"http://google.com\" class=\"auto-linker\" target=\"_blank\" rel=\"noopener noreferrer\">google.com</a>" end - test "markdown" do - assert AutoLinker.link("[google.com](http://google.com)", markdown: true) == - "<a href='http://google.com' class=\"auto-linker\" target=\"_blank\" rel=\"noopener noreferrer\">google.com</a>" - end - test "does on link existing links" do assert AutoLinker.link("<a href='http://google.com'>google.com</a>") == "<a href='http://google.com'>google.com</a>" end - test "phone number and markdown link" do - assert AutoLinker.link("888 888-8888 [ab](a.com)", phone: true, markdown: true) == - ~s(<a href="#" class="phone-number" data-phone="8888888888">888 888-8888</a>) <> - ~s( <a href='a.com' class="auto-linker" target="_blank" rel="noopener noreferrer">ab</a>) - end - test "all kinds of links" do - text = - "hello google.com https://ddg.com 888 888-8888 user@email.com [google.com](http://google.com) irc:///mIRC" + text = "hello google.com https://ddg.com 888 888-8888 user@email.com irc:///mIRC" expected = - "hello <a href=\"http://google.com\">google.com</a> <a href=\"https://ddg.com\">ddg.com</a> <a href=\"#\" class=\"phone-number\" data-phone=\"8888888888\">888 888-8888</a> <a href=\"mailto:user@email.com\">user@email.com</a> <a href='http://google.com'>google.com</a> <a href=\"irc:///mIRC\">irc:///mIRC</a>" + "hello <a href=\"http://google.com\">google.com</a> <a href=\"https://ddg.com\">ddg.com</a> <a href=\"#\" class=\"phone-number\" data-phone=\"8888888888\">888 888-8888</a> <a href=\"mailto:user@email.com\">user@email.com</a> <a href=\"irc:///mIRC\">irc:///mIRC</a>" assert AutoLinker.link(text, phone: true, - markdown: true, email: true, scheme: true, extra: true, diff --git a/test/builder_test.exs b/test/builder_test.exs @@ -29,13 +29,6 @@ defmodule AutoLinker.BuilderTest do assert create_link("http://text", %{rel: false, strip_prefix: false}) == expected end - test "create_markdown_links/2" do - expected = - "<a href='url' class=\"auto-linker\" target=\"_blank\" rel=\"noopener noreferrer\">text</a>" - - assert create_markdown_links("[text](url)", %{}) == expected - end - test "format_hashtag/3" do expected = "<a href=\"/t/girls\">#girls</a>" assert format_hashtag(%{href: "/t/girls"}, "girls", nil) == expected