OSSIA
Open Scenario System for Interactive Application
|
Utilities to construct classes that will perform an action for nodes matching a path. More...
Utilities to construct classes that will perform an action for nodes matching a path.
The path has an user-friendly, OSC 1.1-like format : foo:/bar/baz* ../boo/bin.* //bin/bo??o/bee buz:/{bee,boo}*
We have a translation phase : Let [:ossia:] be the regex character class defined by ossia::net::name_characters() "?" -> [:ossia:]? "*" -> [:ossia:]* "!" -> any_instance() "//" -> any_path() / ".." -> get_parent() "{1..5}" -> get_range() "[..]" -> already handled by the regex engine. "{a,b}" -> "(a|b)"
All given paths are ended by "$"
Given a path in the "user" format : First try to find the largest absolute part from the beginning. Then apply regexes to each sub-path and child node by splitting :
foo:/bar/baz / b*anana.?? / *.* // bonkers / * ../ plop / foo.* / ..
The next step is, instead of parsing text, construct the path elements at compile time.