foo
Supponiamo di voler attendere il prossimo evento che ha un percorso con tre segmenti:
sync "/*/*/*"
Questo corrisponderà a qualsiasi evento Time State con esattamente tre segmenti, questo indipendentemente dal loro nome. Per esempio:
cue "/foo/bar/baz"
cue "/foo/baz/quux"
cue "/eggs/beans/toast"
cue "/moog/synths/rule"
Tuttavia, non corrisponderà a percorsi con meno o più segmenti. I seguenti non corrisponderanno:
cue "/foo/bar"
cue "/foo/baz/quux/quaax"
cue "/eggs"
Ogni *
significa qualsiasi contenuto. In questo modo possiamo abbinare i percorsi con un solo segmento con /*
oppure quelli con cinque segmenti con /*/*/*/*/*
foo
cue "/foo/bar/baz"
cue "/foo/baz/baz"
cue "/foo/beans/baz"
Tuttavia, non corrisponderebbe a quanto segue:
cue "/foo/flibble/baz"
cue "/foo/abaz/baz"
cue "/foo/beans/baz/eggs"
foo
foo
cue "/foo/bar/baz"
cue "/foo/bar/beans/baz"
cue "/foo/baz"
cue "/foo/a/b/c/d/e/f/baz"
È possibile utilizzare il carattere ?
per trovare una corrispondenza con un singolo carattere, ad esempio "/?oo/bar/baz"
che corrisponderà:
cue "/foo/bar/baz"
cue "/goo/bar/baz"
cue "/too/bar/baz"
cue "/woo/bar/baz"
foo
cue "/foo/bar/quux"
cue "/foo/beans/quux"
cue "/foo/eggs/quux"
foo
cue "/foo/aux/baz"
cue "/foo/bux/baz"
cue "/foo/cux/baz"
foo
cue "/foo/aux/baz"
cue "/foo/bux/baz"
cue "/foo/cux/baz"
cue "/foo/dux/baz"
cue "/foo/eux/baz"
When calling sync
or get
you are free to combine matchers in any order you see fit to powerfully match any Time State event created by cue
or set
. Let’s look at a crazy example:
in_thread do
sync "/?oo/[a-z]*/**/ba*/{quux,quaax}/"
sample :loop_amen
end
sleep 1
cue "/foo/beans/a/b/c/d/e/bark/quux/"
For those curious, these matching rules are based on the Open Sound Control pattern matching specification which is explained in detail here: http://opensoundcontrol.org/spec-1_0