Pattern Matching

foo

Match any path segment

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:

Tuttavia, non corrisponderà a percorsi con meno o più segmenti. I seguenti non corrisponderanno:

Ogni * significa qualsiasi contenuto. In questo modo possiamo abbinare i percorsi con un solo segmento con /* oppure quelli con cinque segmenti con /*/*/*/*/*

Confrontare segmenti parziali

foo

Tuttavia, non corrisponderebbe a quanto segue:

foo

Confrontare segmenti in percorsi annidati

foo

Trovare corrispondenze di lettere singole

È possibile utilizzare il carattere ? per trovare una corrispondenza con un singolo carattere, ad esempio "/?oo/bar/baz" che corrisponderà:

Trovare corrispondenze di parole multiple

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:

Trovare corrispondenze di lettere multiple

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:

Puoi anche usare il carattere - per specificare un intervallo di lettere. Ad esempio "/foo/[a-e]ux/baz" che corrisponderà solo a:

Combinare corrispondenze

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

Confrontare patter OSC

Per i curiosi, queste regole di confronto sono basate sulle specifiche Open Sound Control, spiegate più in dettaglio qui: http://opensoundcontrol.org/spec-1_0