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"
Se sai che un segmento potrebbe essere uno di un numero selezionato di parole, puoi usare l’operatore {
and }
per specificare una lista di scelte come "/foo/{bar,beans,eggs}/quux"
che troverà corrispondenza solo con:
cue "/foo/bar/quux"
cue "/foo/beans/quux"
cue "/foo/eggs/quux"
Infine, puoi cercare corrispondenze in una selezione di lettere se usi {
and }
per specificare una lista di scelte come ad esempio "/foo/[abc]ux/baz"
che corrisponderà solo a:
cue "/foo/aux/baz"
cue "/foo/bux/baz"
cue "/foo/cux/baz"
Puoi anche usare il carattere -
per specificare un intervallo di lettere. Ad esempio "/foo/[a-e]ux/baz"
che corrisponderà solo a:
cue "/foo/aux/baz"
cue "/foo/bux/baz"
cue "/foo/cux/baz"
cue "/foo/dux/baz"
cue "/foo/eux/baz"
Nelle chiamate sync
o get
sei libero di combinare i parametri di confronto in qualunque ordine per intercettare qualunque evento Time State creato da cue
o set
. Diamo un’occhiata a un esempio inverosimile:
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: https://opensoundcontrol.stanford.edu/spec-1_0.html