logo

auto_linker

AutoLinker-shim, based on https://git.pleroma.social/pleroma/auto_linker
commit: 14484e867139fb9c6f68c14e38648e49d6cd79c7
parent: 8b9a6d4f8b3fb6504f1250fe593534e65f78da74
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed, 27 Feb 2019 01:12:50 +0100

accept schemed URLs by default & add AutoLink.Parser.is_url?/1

Diffstat:

Mlib/auto_linker/parser.ex16+++++-----------
Mtest/parser_test.exs16++++++++--------
2 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/lib/auto_linker/parser.ex b/lib/auto_linker/parser.ex @@ -27,8 +27,6 @@ defmodule AutoLinker.Parser do @invalid_url ~r/(\.\.+)|(^(\d+\.){1,2}\d+$)/ - @match_url ~r{^[\w\.-]+(?:\.[\w\.-]+)+[\w\-\._~%:/?#[\]@!\$&'\(\)\*\+,;=.]+$} - @match_scheme ~r{^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~%:/?#[\]@!\$&'\(\)\*\+,;=.]+$} @match_phone ~r"((?:x\d{2,7})|(?:(?:\+?1\s?(?:[.-]\s?)?)?(?:\(\s?(?:[2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s?\)|(?:[2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s?(?:[.-]\s?)?)(?:[2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s?(?:[.-]\s?)?(?:[0-9]{4}))" @@ -261,7 +259,7 @@ defmodule AutoLinker.Parser do def check_and_link(buffer, opts, _user_acc) do buffer - |> is_url?(opts[:scheme]) + |> is_url?() |> link_url(buffer, opts) end @@ -302,19 +300,15 @@ defmodule AutoLinker.Parser do end # @doc false - def is_url?(buffer, true) do - if Regex.match?(@invalid_url, buffer) do - false - else - @match_scheme |> Regex.match?(buffer) - end + def is_url?(buffer, _) do + is_url(buffer) end - def is_url?(buffer, _) do + def is_url?(buffer) do if Regex.match?(@invalid_url, buffer) do false else - @match_url |> Regex.match?(buffer) + @match_scheme |> Regex.match?(buffer) end end diff --git a/test/parser_test.exs b/test/parser_test.exs @@ -5,31 +5,31 @@ defmodule AutoLinker.ParserTest do import AutoLinker.Parser describe "is_url" do - test "valid scheme true" do + test "valid scheme" do valid_scheme_urls() |> Enum.each(fn url -> - assert is_url?(url, true) + assert is_url?(url) end) end - test "invalid scheme true" do + test "invalid scheme" do invalid_scheme_urls() |> Enum.each(fn url -> - refute is_url?(url, true) + refute is_url?(url) end) end - test "valid scheme false" do + test "valid non-scheme" do valid_non_scheme_urls() |> Enum.each(fn url -> - assert is_url?(url, false) + assert is_url?(url) end) end - test "invalid scheme false" do + test "invalid non-scheme" do invalid_non_scheme_urls() |> Enum.each(fn url -> - refute is_url?(url, false) + refute is_url?(url) end) end end