logo

auto_linker

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

Mlib/auto_linker/parser.ex19+++++++++++++++----
Mmix.exs2+-
Mtest/parser_test.exs3++-
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