Karya, built on Mon Jul 24 11:39:07 PDT 2017 (patch 33511aca01257b76b88de7c7a2763b7a965c084e)

Safe HaskellNone

Instrument.Search

Contents

Description

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

The syntax is documented by Query.

Synopsis

Documentation

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".

Constructors

Query [Clause] 

Instances

data Clause Source #

Clause inverted? tag val

Instances

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

implementation

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

Get tags of an inst, including automatically generated tags.