Browse Source

fix double dot issue

merge-requests/1/head
Stephen M. Pallen 7 years ago
parent
commit
b30df6cb37
3 changed files with 18 additions and 6 deletions
  1. +15
    -4
      lib/auto_linker/parser.ex
  2. +1
    -1
      mix.exs
  3. +2
    -1
      test/parser_test.exs

+ 15
- 4
lib/auto_linker/parser.ex 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


+ 1
- 1
mix.exs View File

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


+ 2
- 1
test/parser_test.exs 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

Loading…
Cancel
Save