fix double dot issue

This commit is contained in:
Stephen M. Pallen 2017-04-06 19:59:31 -04:00
parent 783b64aaac
commit b30df6cb37
3 changed files with 18 additions and 6 deletions

View file

@ -16,6 +16,11 @@ defmodule AutoLinker.Parser do
"Check out <a href='http://google.com' class='auto-linker' target='_blank' rel='noopener noreferrer'>google.com</a>"
"""
@match_dots ~r/\.\.+/
@match_url ~r{^[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$}
@match_scheme ~r{^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$}
def parse(text, opts \\ %{})
def parse(text, list) when is_list(list), do: parse(text, Enum.into(list, %{}))
@ -79,12 +84,18 @@ defmodule AutoLinker.Parser do
@doc false
def is_url?(buffer, true) do
re = ~r{^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$}
Regex.match? re, buffer
if Regex.match? @match_dots, buffer do
false
else
Regex.match? @match_scheme, buffer
end
end
def is_url?(buffer, _) do
re = ~r{^[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$}
Regex.match? re, buffer
if Regex.match? @match_dots, buffer do
false
else
Regex.match? @match_url, buffer
end
end
@doc false

View file

@ -1,7 +1,7 @@
defmodule AutoLinker.Mixfile do
use Mix.Project
@version "0.1.0"
@version "0.1.1"
def project do
[

View file

@ -86,7 +86,8 @@ defmodule AutoLinker.ParserTest do
def invalid_non_scheme_urls, do: [
"invalid.com/perl.cgi?key= | web-site.com/cgi-bin/perl.cgi?key1=value1&key2",
"invalid."
"invalid.",
"hi..there"
]
end