From de243909aab8a8ceedede9ae794361d1eb41a02d Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Sat, 13 Feb 2021 13:07:19 -0600 Subject: [PATCH] Try to strip common English apostrope contractions/abbreviations on words --- lib/linkify/parser.ex | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/linkify/parser.ex b/lib/linkify/parser.ex index 325b69c..3038b0e 100644 --- a/lib/linkify/parser.ex +++ b/lib/linkify/parser.ex @@ -17,6 +17,13 @@ defmodule Linkify.Parser do @delimiters ~r/[,.;:>?!]*$/ + @en_apostrophes [ + "'", + "'s", + "'ll", + "'d" + ] + @prefix_extra [ "magnet:?", "dweb://", @@ -209,6 +216,12 @@ defmodule Linkify.Parser do defp strip_punctuation(buffer), do: String.replace(buffer, @delimiters, "") + defp strip_en_apostrophes(buffer) do + Enum.reduce(@en_apostrophes, buffer, fn abbrev, buf -> + String.replace_suffix(buf, abbrev, "") + end) + end + def url?(buffer, opts) do valid_url?(buffer) && Regex.match?(@match_url, buffer) && valid_tld?(buffer, opts) end @@ -367,6 +380,7 @@ defmodule Linkify.Parser do buffer |> String.split("<") |> List.first() + |> strip_en_apostrophes() |> strip_punctuation() |> strip_parens()