Edgewall Software

Ticket #1: keywords.diff

File keywords.diff, 1.6 KB (added by cmlenz, 5 years ago)

Possible patch

  • babel/catalog/extract.py

     
    3434GROUP_NAME = 'babel.extractors' 
    3535 
    3636KEYWORDS = ( 
    37     '_', 'gettext', 'ngettext', 
    38     'dgettext', 'dngettext', 
    39     'ugettext', 'ungettext' 
     37    ('_',        [1, 1]), 
     38    ('gettext',  [1, 1]),  ('ngettext', [1, 2]), 
     39    ('dgettext', [2, 2]), ('dngettext', [2, 3]), 
     40    ('ugettext', [1, 1]), ('ungettext', [1, 2]) 
    4041) 
    4142 
    4243DEFAULT_MAPPING = { 
     
    145146    :rtype: `list` 
    146147    :raise ValueError: if the extraction method is not registered 
    147148    """ 
     149    args = dict([(k[0], k[1]) for k in keywords]) 
     150    keywords = [k[0] for k in keywords] 
    148151    for entry_point in working_set.iter_entry_points(GROUP_NAME, method): 
    149152        func = entry_point.load(require=True) 
    150         return list(func(fileobj, keywords, options=options or {})) 
     153        for lineno, funcname, message in func(fileobj, keywords, 
     154                                              options=options or {}): 
     155            if funcname in args: 
     156                if not isinstance(message, (list, tuple)): 
     157                    message = [message] 
     158                start, end = args[funcname] 
     159                message = message[start - 1:end] 
     160                if len(message) == 1: 
     161                    message = message[0] 
     162                else: 
     163                    message = tuple(message) 
     164            yield lineno, funcname, message 
     165        return 
    151166    raise ValueError('Unknown extraction method %r' % method) 
    152167 
    153168def extract_genshi(fileobj, keywords, options):