X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=npybabel.py;h=0a3c75025c9c7cc178aa3cb4c1b2cbfed7596ec1;hb=05d6d35cc85be3965482cbbbba3f008001f0283c;hp=d2a5553fc801863b4207885a15c4fcd21d97b687;hpb=5b522f5d062a526b7c065ebe39b1879b20c3cf12;p=odoo%2Fodoo.git diff --git a/npybabel.py b/npybabel.py index d2a5553..0a3c750 100755 --- a/npybabel.py +++ b/npybabel.py @@ -3,12 +3,33 @@ __requires__ = 'Babel==0.9.6' import sys from pkg_resources import load_entry_point +import re +import json +import xml.etree.ElementTree as elt if __name__ == '__main__': sys.exit( load_entry_point('Babel==0.9.6', 'console_scripts', 'pybabel')() ) +XMLJS_EXPR = re.compile(r"""(?:\_t *\( *((?:"(?:[^"\\]|\\.)*")|(?:'(?:[^'\\]|\\.)*')) *\))""") + +def extract_xmljs(fileobj, keywords, comment_tags, options): + content = fileobj.read() + found = XMLJS_EXPR.finditer(content) + result = [] + index = 0 + line_nbr = 0 + for f in found: + mes = f.group(1) + mes = json.loads(mes) + while index < f.start(): + if content[index] == "\n": + line_nbr += 1 + index += 1 + result.append((line_nbr, None, mes, "")) + return result + def extract_qweb(fileobj, keywords, comment_tags, options): """Extract messages from XXX files. :param fileobj: the file-like object the messages should be extracted @@ -22,5 +43,23 @@ def extract_qweb(fileobj, keywords, comment_tags, options): tuples :rtype: ``iterator`` """ - content = fileobj.read() - return [] + result = [] + def handle_text(str): + str = (str or "").strip() + if not str: + return + result.append((0, None, str, "")) + + def iter_elements(current_element): + for el in current_element: + if "t-js" not in el.attrib and \ + not ("t-jquery" in el.attrib and "t-operation" not in el.attrib) and \ + not ("t-trad" in el.attrib and el.attrib["t-trad"].strip() == "off"): + handle_text(el.text) + iter_elements(el) + handle_text(el.tail) + + tree = elt.parse(fileobj) + iter_elements(tree.getroot()) + + return result