Correspondance de motif

Quand vous obtenez et affectez de l’information dans l’État du Temps, il est possible d’utiliser des clés plus complexes que les symboles basiques comme :fooet :bar. Vous pouvez également utiliser des chaînes de caractères de format URL appelées chemin comme "/foo/bar/baz". Lorsque nous avons commencé à travailler avec les chemins, nous pouvons commencer à prendre avantage du système sophistiqué de correspondance de motif de Sonic Pi pour get et sync des chemins “similaires” au lieu “d’identiques”. Étudions cela de plus près.

Faire correspondre n’importe quel segment de chemin

Assumons que nous voulons attendre pour le prochain événement qui a trois segments de chemin :

sync "/*/*/*"

Ceci va faire une correspondance avec tout événement d’État du Temps avec exactement trois segments de chemin, et ce, peu importe leur nom. Par exemple :

cue "/foo/bar/baz" cue "/foo/baz/quux" cue "/eggs/beans/toast" cue "/moog/synths/rule"

Toutefois, ça ne correspondra pas avec des chemins qui ont plus ou moins de segments. L’élément suivant n’aura pas de correspondance :

cue "/foo/bar" cue "/foo/baz/quux/quaax" cue "/eggs"

Chaque * signifie n’importe quel contenu. Donc, nous pourrions trouver des correspondance avec des chemins d’un seul segment avec /* ou des chemins avec cinq segments avec /*/*/*/*/*

Faire des correspondances de segments partiels

foo

cue "/foo/bar/baz" foo foo

Cependant, cela ne correspondrait pas avec ceci :

foo foo foo

foo

Faire correspondre des segments de chemins imbriqués

foo

cue "/foo/bar/baz" foo foo foo

Faire correspondre des lettres

Vous pouvez utiliser le caractère ? pour faire une correspondance sur un seul caractère comme "/?oo/bar/baz" ce qui correspondra avec :

cue "/foo/bar/baz" cue "/goo/bar/baz" cue "/too/bar/baz" cue "/woo/bar/baz"

Faire correspondre plusieurs mots

foo

foo foo foo

Faire correspondre plusieurs lettres

foo

foo foo foo

foo

foo foo foo foo foo

Combiner des correspondances

En appelant sync ou get, vous êtes libre de combiner des correspondances dans n’importe quel ordre qui vous convient pour faire correspondre des événements d’État du Temps créés par cue ou set. Regardons un exemple fou :

sample :loop_amen

Correspondance de motif OSC

Pour les curieux, ces règles de correspondance sont basées sur la spécification de correspondance de motif Open Sound Control, qui est expliquée en détail ici : http://opensoundcontrol.org/spec-1_0