@ -42,7 +42,7 @@ defmodule AutoLinker.Parser do
@tlds " ./priv/tlds.txt " |> File . read! ( ) |> String . split ( " \n " , trim : true ) |> MapSet . new ( )
@default_opts ~w( url )a
@default_opts ~w( url validate_tld )a
@doc """
Parse the given string , identifying items to link .
@ -262,7 +262,7 @@ defmodule AutoLinker.Parser do
def check_and_link ( buffer , opts , _user_acc ) do
str = strip_parens ( buffer )
if url? ( str , opts [ :scheme ] ) do
if url? ( str , opts [ :scheme ] , opts [ :validate_tld ] ) do
case parse_link ( str , opts ) do
^ buffer -> link_url ( buffer , opts )
url -> String . replace ( buffer , url , link_url ( url , opts ) )
@ -315,12 +315,16 @@ defmodule AutoLinker.Parser do
end
# @doc false
def url? ( buffer , true ) do
valid_url? ( buffer ) && Regex . match? ( @match_scheme , buffer ) && valid_tld? ( buffer )
def url? ( buffer , scheme , validate_tld \\ true )
def url? ( buffer , true , validate_tld ) do
valid_url? ( buffer ) && Regex . match? ( @match_scheme , buffer ) &&
( ! validate_tld or validate_tld == :no_scheme || valid_tld? ( buffer ) )
end
def url? ( buffer , _ ) do
valid_url? ( buffer ) && Regex . match? ( @match_url , buffer ) && valid_tld? ( buffer )
def url? ( buffer , _ , validate_tld ) do
valid_url? ( buffer ) && Regex . match? ( @match_url , buffer ) &&
( validate_tld == false || valid_tld? ( buffer ) )
end
def email? ( buffer ) do