A library for searching lists of strings or of
data with a function f: Datum -> String.
For example, running
Search.withQueryString
identity
Search.NotCaseSensitive
"foo -bar | baz"on the list
[ "foo yada", "foo bar", "hehe, baza baza!" ]returns the list
[ "foo yada", "hehe, baza baza!" ]The query string foo -bar | baz is of the form
P | Q. It will match anything that matches P
or Q. The term P is form word1 -word2 It will
match anything that contains word1 but not word2.
Similarly, word1 word2 matches anything that contains
word1 and word2.
Search terms with spaces are allowed: just surround
the term with single quotes. The term
'foo bar' will match "foo bar" but neither "bar foo"
nor "foo baz bar".
Suppose that you want to query data of type List Datum.
You can do this if you have function like
digest : Datum -> String. For example, if
type alias Datum =
{ title: String
, tags : List String
, ... other stuff ...
} Then
digest datum = String.join " " title::tagsdoes the job — you can search using
Search.withQueryString
digest
Search.NotCaseSensitive
"foo -bar | baz"