commit: 1a341fdac33211f5eae1ad6e645fe1b9f39834bc
parent c19c7afa5b3ae417001cc9b090c792383bed48f8
Author: rinpatch <rinpatch@sdf.org>
Date: Tue, 18 Jun 2019 13:07:14 +0300
Move checking for validate_tld to valid_tld?
Diffstat:
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/lib/auto_linker/parser.ex b/lib/auto_linker/parser.ex
@@ -318,30 +318,37 @@ defmodule AutoLinker.Parser do
def url?(buffer, opts) do
if opts[:scheme] do
- valid_url?(buffer) && Regex.match?(@match_scheme, buffer) &&
- (!opts[:validate_tld] or opts[:validate_tld] == :no_scheme || valid_tld?(buffer))
+ valid_url?(buffer) && Regex.match?(@match_scheme, buffer) && valid_tld?(buffer, opts)
else
- valid_url?(buffer) && Regex.match?(@match_url, buffer) &&
- (opts[:validate_tld] == false || valid_tld?(buffer))
+ valid_url?(buffer) && Regex.match?(@match_url, buffer) && valid_tld?(buffer, opts)
end
end
def email?(buffer) do
- valid_url?(buffer) && Regex.match?(@match_email, buffer) && valid_tld?(buffer)
+ valid_url?(buffer) && Regex.match?(@match_email, buffer) && valid_tld?(buffer, [])
end
defp valid_url?(url), do: !Regex.match?(@invalid_url, url)
- def valid_tld?(buffer) do
- with [host] <- Regex.run(@match_hostname, buffer, capture: [:host]) do
- if ip?(host) do
+ def valid_tld?(buffer, opts) do
+ cond do
+ opts[:validate_tld] == false ->
true
- else
- tld = host |> String.split(".") |> List.last()
- MapSet.member?(@tlds, tld)
- end
- else
- _ -> false
+
+ opts[:validate_tld] == :no_scheme && opts[:scheme] ->
+ true
+
+ true ->
+ with [host] <- Regex.run(@match_hostname, buffer, capture: [:host]) do
+ if ip?(host) do
+ true
+ else
+ tld = host |> String.split(".") |> List.last()
+ MapSet.member?(@tlds, tld)
+ end
+ else
+ _ -> false
+ end
end
end