Commit 2a044732 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Fixed #16971 - Made the parsing of javascript files by 'makemessages' much...

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
parent f3304d33
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+18 −12
Original line number Diff line number Diff line
@@ -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)
        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 new_state:
                    self.state = new_state

                if tok.next:
                    state = tok.next
                    break
            text = text[eaten:]

        self.state = state


class JsLexer(Lexer):