@@ 208-231 (lines=24) @@ | ||
205 | def __call__(self, text, rules=None): |
|
206 | return self.parse(text, rules) |
|
207 | ||
208 | def parse(self, text, rules=None): |
|
209 | text = text.rstrip('\n') |
|
210 | ||
211 | if not rules: |
|
212 | rules = self.default_rules |
|
213 | ||
214 | def manipulate(text): |
|
215 | for key in rules: |
|
216 | rule = getattr(self.rules, key) |
|
217 | m = rule.match(text) |
|
218 | if not m: |
|
219 | continue |
|
220 | getattr(self, 'parse_%s' % key)(m) |
|
221 | return m |
|
222 | return False # pragma: no cover |
|
223 | ||
224 | while text: |
|
225 | m = manipulate(text) |
|
226 | if m is not False: |
|
227 | text = text[len(m.group(0)):] |
|
228 | continue |
|
229 | if text: # pragma: no cover |
|
230 | raise RuntimeError('Infinite loop at: %s' % text) |
|
231 | return self.tokens |
|
232 | ||
233 | def parse_newline(self, m): |
|
234 | length = len(m.group(0)) |
@@ 195-218 (lines=24) @@ | ||
192 | def __call__(self, text, rules=None): |
|
193 | return self.parse(text, rules) |
|
194 | ||
195 | def parse(self, text, rules=None): |
|
196 | text = text.rstrip('\n') |
|
197 | ||
198 | if not rules: |
|
199 | rules = self.default_rules |
|
200 | ||
201 | def manipulate(text): |
|
202 | for key in rules: |
|
203 | rule = getattr(self.rules, key) |
|
204 | m = rule.match(text) |
|
205 | if not m: |
|
206 | continue |
|
207 | getattr(self, 'parse_%s' % key)(m) |
|
208 | return m |
|
209 | return False # pragma: no cover |
|
210 | ||
211 | while text: |
|
212 | m = manipulate(text) |
|
213 | if m is not False: |
|
214 | text = text[len(m.group(0)):] |
|
215 | continue |
|
216 | if text: # pragma: no cover |
|
217 | raise RuntimeError('Infinite loop at: %s' % text) |
|
218 | return self.tokens |
|
219 | ||
220 | def parse_newline(self, m): |
|
221 | length = len(m.group(0)) |