commit: 0e6869c9ea36d81bdb12356c0a36debb2e4a0181
parent 90613b4bae875a3610c275b7056b61ffdd53210d
Author: Egor Kislitsyn <egor@kislitsyn.com>
Date: Wed, 1 May 2019 14:48:04 +0700
Fix tld validation
Diffstat:
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/lib/auto_linker/parser.ex b/lib/auto_linker/parser.ex
@@ -338,13 +338,15 @@ defmodule AutoLinker.Parser do
end
def is_valid_tld?(true, buffer) do
- [host] = Regex.run(@match_hostname, buffer, capture: [:host])
-
- if is_ip?(host) do
- true
+ with [host] <- Regex.run(@match_hostname, buffer, capture: [:host]) do
+ if is_ip?(host) do
+ true
+ else
+ tld = host |> String.split(".") |> List.last()
+ MapSet.member?(@tlds, tld)
+ end
else
- tld = host |> String.split(".") |> List.last()
- MapSet.member?(@tlds, tld)
+ _ -> false
end
end
diff --git a/test/parser_test.exs b/test/parser_test.exs
@@ -110,6 +110,19 @@ defmodule AutoLinker.ParserTest do
text = "google.com"
assert parse(text, url: false, phone: true) == text
end
+
+ test "do not link `:test.test`" do
+ text = ":test.test"
+
+ assert parse(text, %{
+ scheme: true,
+ extra: true,
+ class: false,
+ strip_prefix: false,
+ new_window: false,
+ rel: false
+ }) == text
+ end
end
def valid_number?([list], number) do