Karya, built on 2020-11-26T21:03:17 (patch 23b5be2d53a9e8e7d6136cda5aae2849abe5cded)
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] 


Instances details
Show Query # 
Instance details

Defined in Instrument.Search


showsPrec :: Int -> Query -> ShowS #

show :: Query -> String #

showList :: [Query] -> ShowS #

data Clause Source #

Clause inverted? tag val


Instances details
Show Clause # 
Instance details

Defined in Instrument.Search

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.

data Index Source #


Instances details
Show Index # 
Instance details

Defined in Instrument.Search


showsPrec :: Int -> Index -> ShowS #

show :: Index -> String #

showList :: [Index] -> ShowS #

Serialize Index # 
Instance details

Defined in Instrument.Serialize

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.