diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2011-10-04 20:11:41 +0000 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2011-10-04 20:11:41 +0000 |
| commit | 2a044732f64a8a5b26cdf11e081cd9d7b135e82a (patch) | |
| tree | a008a4e53a79852e29321c3d49f94f85f7c436a6 | |
| parent | f3304d33109bbfc999d65506bc3d6f2c3e043d1f (diff) | |
Fixed #16971 - Made the parsing of javascript files by 'makemessages' much faster. Thanks Antti Haapala for the implementation and Ned Batchelder for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16924 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/utils/jslex.py | 30 |
2 files changed, 19 insertions, 12 deletions
@@ -222,6 +222,7 @@ answer newbie questions, and generally made Django that much better: Janos Guljas Thomas Güttler <hv@tbz-pariv.de> Horst Gutmann <zerok@zerokspot.com> + Antti Haapala <antti@industrialwebandmagic.com> Scot Hacker <shacker@birdhouse.org> dAniel hAhler hambaloney diff --git a/django/utils/jslex.py b/django/utils/jslex.py index 88a22ec67d..c465647001 100644 --- a/django/utils/jslex.py +++ b/django/utils/jslex.py @@ -51,19 +51,25 @@ class Lexer(object): Yields pairs (`name`, `tokentext`). """ - while text: - eaten = 0 - for match in self.regexes[self.state].finditer(text): - for name, toktext in match.groupdict().iteritems(): - if toktext is not None: - tok = self.toks[name] - new_state = tok.next - eaten += len(toktext) - yield (tok.name, toktext) - if new_state: - self.state = new_state + end = len(text) + state = self.state + regexes = self.regexes + toks = self.toks + start = 0 + + while start < end: + for match in regexes[state].finditer(text, start): + name = match.lastgroup + tok = toks[name] + toktext = match.group(name) + start += len(toktext) + yield (tok.name, toktext) + + if tok.next: + state = tok.next break - text = text[eaten:] + + self.state = state class JsLexer(Lexer): |
