mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-12-18 06:57:59 +01:00
33 lines
619 B
Elixir
33 lines
619 B
Elixir
|
defmodule PhilomenaQuery.Parse.String do
|
||
|
@moduledoc """
|
||
|
Search string normalization utilities.
|
||
|
"""
|
||
|
|
||
|
@doc """
|
||
|
Convert a multiline or empty search string into a single search string.
|
||
|
|
||
|
## Examples
|
||
|
|
||
|
iex> Search.String.normalize(nil)
|
||
|
""
|
||
|
|
||
|
iex> Search.String.normalize("foo\nbar")
|
||
|
"(foo) || (bar)"
|
||
|
|
||
|
"""
|
||
|
@spec normalize(String.t() | nil) :: String.t()
|
||
|
def normalize(str)
|
||
|
|
||
|
def normalize(nil) do
|
||
|
""
|
||
|
end
|
||
|
|
||
|
def normalize(str) do
|
||
|
str
|
||
|
|> String.replace("\r", "")
|
||
|
|> String.split("\n", trim: true)
|
||
|
|> Enum.map(fn s -> "(#{s})" end)
|
||
|
|> Enum.join(" || ")
|
||
|
end
|
||
|
end
|