Karya, built on 2018-03-16T03:22:32 (patch df7306861219887e676081746f4a4edfe05eb0b5)

Safe HaskellNone




A simple tag-oriented query language, and an index for fast-ish searching.

The syntax is documented by Query.



newtype Query Source #

A simple tag-oriented query language. Instruments match whose tags match all of the given TagKeys exactly, and whose corresponding vals have the queried val as a substring. All the pairs must match, but pairs that match nothing won't cause the match to fail. A tag beginning with ! will subtract its matches from the result.

For example, a single word tag1 will match all instruments that have the given tag. tag1=x requires that tag1 has an "x" in it.

tag1=x tag2=y !bad !not=want requires both tags to match, the bad tag to not be present, and the not tag to not contain "want".


Query [Clause] 


data Clause Source #

Clause inverted? tag val


search :: Index -> Search Source #

Search the db. The input Query is in the parsed db query language, and the output is the names of matching patches, along with their backend.

An empty query matches everything.

merge_indices :: Index -> Index -> Index Source #

Merge the indices, favoring instruments from the left one.

parse :: Text -> Query Source #

The query language looks like "a b= c=d !e=f", which means

Query [Clause False "a" "", Clause False "b" "", Clause False "c" "d",
   Clause True "e" "f"]

TODO parse quotes for keys or vals with spaces


inst_tags :: Inst.Backend -> [Tag.Tag] Source #

Get tags of an inst, including automatically generated tags.