| 148 | |
| 149 | |
| 150 | class Argument(LeafPattern): |
| 151 | |
| 152 | def single_match(self, left): |
| 153 | for n, pattern in enumerate(left): |
| 154 | if type(pattern) is Argument: |
| 155 | return n, Argument(self.name, pattern.value) |
| 156 | return None, None |
| 157 | |
| 158 | @classmethod |
| 159 | def parse(class_, source): |
| 160 | name = re.findall('(<\S*?>)', source)[0] |
| 161 | value = re.findall('\[default: (.*)\]', source, flags=re.I) |
| 162 | return class_(name, value[0] if value else None) |
| 163 | |
| 164 | |
| 165 | class Command(Argument): |
no outgoing calls