Merge branch 'mentions-and-apostrophes' into 'master'
Mentions and apostrophes See merge request pleroma/elixir-libraries/linkify!41
This commit is contained in:
commit
c1aea9357d
3 changed files with 24 additions and 2 deletions
|
@ -5,6 +5,7 @@
|
|||
### Fixed
|
||||
|
||||
- Incorrect detection of IPv4 addresses causing random numbers (e.g., $123.45) to get linked
|
||||
- Inability to link mentions with a trailing apostrophe. e.g., @user@example's
|
||||
|
||||
## 0.4.0 - 2020-11-24
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -383,10 +383,17 @@ defmodule LinkifyTest do
|
|||
new_window: true
|
||||
) == expected
|
||||
|
||||
expected =
|
||||
"That's <a href=\"https://example.com/user/user@example.com\" target=\"_blank\">@user@example.com</a>'s server"
|
||||
|
||||
text = "That's @user@example.com's server"
|
||||
|
||||
assert Linkify.link(text, mention: true, mention_prefix: "https://example.com/user/") ==
|
||||
text
|
||||
assert Linkify.link(text,
|
||||
mention: true,
|
||||
mention_prefix: "https://example.com/user/",
|
||||
new_window: true
|
||||
) ==
|
||||
expected
|
||||
end
|
||||
|
||||
test "mentions with no word-separation before them" do
|
||||
|
|
Reference in a new issue