logo

auto_linker

AutoLinker-shim, based on https://git.pleroma.social/pleroma/auto_linker git clone https://hacktivis.me/git/auto_linker.git
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:

Mlib/auto_linker/parser.ex35+++++++++++++++++++++--------------
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