OSSIA
Open Scenario System for Interactive Application
traversal Namespace Reference

Utilities to construct classes that will perform an action for nodes matching a path. More...

Detailed Description

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.