| 334 | '(?::((?:\\\\.|[^\\\\>])+)?)?)?>))') |
| 335 | |
| 336 | def _itertokens(self, rule): |
| 337 | offset, prefix = 0, '' |
| 338 | for match in self.rule_syntax.finditer(rule): |
| 339 | prefix += rule[offset:match.start()] |
| 340 | g = match.groups() |
| 341 | if g[2] is not None: |
| 342 | depr(0, 13, "Use of old route syntax.", |
| 343 | "Use <name> instead of :name in routes.") |
| 344 | if len(g[0]) % 2: # Escaped wildcard |
| 345 | prefix += match.group(0)[len(g[0]):] |
| 346 | offset = match.end() |
| 347 | continue |
| 348 | if prefix: |
| 349 | yield prefix, None, None |
| 350 | name, filtr, conf = g[4:7] if g[2] is None else g[1:4] |
| 351 | yield name, filtr or 'default', conf or None |
| 352 | offset, prefix = match.end(), '' |
| 353 | if offset <= len(rule) or prefix: |
| 354 | yield prefix + rule[offset:], None, None |
| 355 | |
| 356 | def add(self, rule, method, target, name=None): |
| 357 | """ Add a new rule or replace the target for an existing rule. """ |