commit: b30df6cb37b69166fe2af9edd913626fc9eb3515
parent: 783b64aaac53b8e0de042f707fe6e1fd2ccf6aba
Author: Stephen M. Pallen <smpallen99@yahoo.com>
Date: Thu, 6 Apr 2017 19:59:31 -0400
fix double dot issue
Diffstat:
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/lib/auto_linker/parser.ex b/lib/auto_linker/parser.ex
@@ -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
diff --git a/mix.exs b/mix.exs
@@ -1,7 +1,7 @@
defmodule AutoLinker.Mixfile do
use Mix.Project
- @version "0.1.0"
+ @version "0.1.1"
def project do
[
diff --git a/test/parser_test.exs b/test/parser_test.exs
@@ -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