Karya, built on 2023-08-29T07:47:28 (patch 7a412d5d6ba4968ca4155ef276a062ccdeb9109a)
Safe HaskellSafe-Inferred

Instrument.Search

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

Instances details
Show Query Source # 
Instance details

Defined in Instrument.Search

Methods

showsPrec :: Int -> Query -> ShowS #

show :: Query -> String #

showList :: [Query] -> ShowS #

data Clause Source #

Clause inverted? tag val

Instances

Instances details
Show Clause Source # 
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

Instances details
Show Index Source # 
Instance details

Defined in Instrument.Search

Methods

showsPrec :: Int -> Index -> ShowS #

show :: Index -> String #

showList :: [Index] -> ShowS #

Serialize Index Source # 
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

implementation

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

Get tags of an inst, including automatically generated tags.