logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
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:

Mlib/pleroma/hashtag.ex2++
Mtest/pleroma/hashtag_test.exs20++++++++++++++++++++
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