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')()
)
-QWEB_EXPR = re.compile(r"""(?:\< *t\-tr *\>(.*?)\< *\/t\-tr *\>)|(?:\_t *\( *((?:"(?:[^"\\]|\\.)*")|(?:'(?:[^'\\]|\\.)*')) *\))""")
-XML_GROUP = 1
-JS_GROUP = 2
+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.
tuples
:rtype: ``iterator``
"""
- content = fileobj.read()
- found = QWEB_EXPR.finditer(content)
result = []
- index = 0
- line_nbr = 0
- for f in found:
- group = XML_GROUP if f.group(XML_GROUP) else JS_GROUP
- mes = f.group(group)
- if group == JS_GROUP:
- mes = json.loads(mes)
- while index < f.start():
- if content[index] == "\n":
- line_nbr += 1
- index += 1
- result.append((line_nbr, None, mes, ""))
+ 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