Let
match =
Search.withQueryString
identity
Search.NotCaseSensitive
"foo -bar | baz"Run match on the list
[ "foo yada", "foo bar", "hehe, baza baza!" ]It will return
[ "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.
Suppose that you want to query data of type List a.
You can do this if you have function like
digest : a -> String. For example, if
type alias Datum =
{ title: String
, tags : List String
, ... other stuff ...
}Then digest datum = String.join " " title::tags
does the job — you can search using
Search.withQueryString
digest
Search.NotCaseSensitive
"foo -bar | baz"Below we describe the types and functions exported from this module.
If the query string is well-formed, Ok True/False is returned,
the result depending
on whether the query string matches datum.
If it is ill-formed, Err errorString is returned. At the moment, the
error string reads 'ill-formed query'.
Filter the data list using the query.
If the query string is well-formed,
Ok filteredList is returned. If it
is ill-formed, Err errorString
is returned. At the moment, the
error string reads 'ill-formed query'.
If the query string is well-formed, Ok True/False is returned depending
on whether the query string matches the datum. If the query string
is ill-formed, False is returned.
Filter the data list using the query. If the query is ill-formed, return the empty list.