code: def parse_rule(rule):
      
      m = _rule_re.match(rule)
      if m is None or m.end() < len(rule):
          raise ValueError('Error while parsing rule {0}'.format(rule))
      data = m.groupdict()
      converter = data['converter'] or 'default'
      return converter, data['args'] or None, data['variable']
docs: Parse a rule and return it as generator. Each iteration yields tuples
      in the form ``(converter, parameters, variable)``. If the converter is
      `None` it's a static url part, otherwise it's a dynamic one.
  
      :internal: