commit: 19f32f7b0981bdfc0da30df011ce1ef3df44dbe5
parent 97e668f4aa5e4ae7b45158b9bc3ff1982baf4089
Author: Mark Felder <feld@feld.me>
Date: Thu, 31 Jul 2025 18:17:58 -0700
Strip hashtag prefixes
Users may actually type in a literal hashtag into the search, so this will ensure it still returns results.
Diffstat:
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/lib/pleroma/hashtag.ex b/lib/pleroma/hashtag.ex
@@ -141,6 +141,8 @@ defmodule Pleroma.Hashtag do
|> String.trim()
|> String.split(~r/\s+/)
|> Enum.filter(&(&1 != ""))
+ |> Enum.map(&String.trim_leading(&1, "#"))
+ |> Enum.filter(&(&1 != ""))
if Enum.empty?(search_terms) do
[]
diff --git a/test/pleroma/hashtag_test.exs b/test/pleroma/hashtag_test.exs
@@ -122,5 +122,25 @@ defmodule Pleroma.HashtagTest do
assert "racecar" in results
assert "nascar" in results
end
+
+ test "handles hashtag symbols in search query" do
+ {:ok, _} = Hashtag.get_or_create_by_name("computer")
+ {:ok, _} = Hashtag.get_or_create_by_name("laptop")
+ {:ok, _} = Hashtag.get_or_create_by_name("phone")
+
+ results_with_hash = Hashtag.search("#computer #laptop")
+ results_without_hash = Hashtag.search("computer laptop")
+
+ assert results_with_hash == results_without_hash
+
+ results_mixed = Hashtag.search("#computer laptop #phone")
+ assert "computer" in results_mixed
+ assert "laptop" in results_mixed
+ assert "phone" in results_mixed
+
+ results_only_hash = Hashtag.search("#computer")
+ results_no_hash = Hashtag.search("computer")
+ assert results_only_hash == results_no_hash
+ end
end
end