[IMP] remove xmljs extractor from babel conf file (does not work), add note to extractor function

bzr revid: xmo@openerp.com-20120214150718-h12fnjsigna5miar
This commit is contained in:
Xavier Morel 2012-02-14 16:07:18 +01:00
parent 79ac080fb2
commit 00ff10c0e6
2 changed files with 28 additions and 3 deletions

View File

@ -1,9 +1,6 @@
[extractors]
qweb = npybabel:extract_qweb
xmljs = npybabel:extract_xmljs
javascript = npybabel:extract_javascript
[javascript: static/src/js/**.js]
[qweb: static/src/xml/**.xml]
[xmljs: static/src/xml/**.xml]

View File

@ -38,6 +38,34 @@ def extract_xmljs(fileobj, keywords, comment_tags, options):
tuples
:rtype: ``iterator``
"""
assert False, """ the XMLJS extractor does not work and was removed:
* Babel apparently does not accept two extractors for the same set of files
so it would not run the xmljs extractor at all, extraction of JS stuff
needs to be done from the XML extractor
* The regex above fails up if there are back-slashed quotes within the
translatable string (the string marked with _t), it just won't match the
string
* While extraction succeeds on XML entities (e.g. "), translation
matching will fail if those entities are kept in the PO msgid as the
XML parser will get an un-escaped string, without those entities (so a
text extractor will extract ``Found match "%s"``, but the msgid
of the PO file must be ``Found match "%s"`` or the translation will fail
* single-quoted strings are not valid JSON string, so single-quoted strings
matched by the regex (likely since XML attributes are double-quoted,
single quotes within them don't have to be escaped) will blow up when
json-parsed for their content
I think that's about it.
If this extractor is reimplemented, it should be integrated into
extract_qweb, either in the current pass (probably not a good idea) or as
a separate pass using iterparse, matching either elements with t-js or
some other kinds of t-* directives (@t-esc, @t-raw, @t-att, others?),
shove the attribute content into a StringIO and pass *that* to Babel's
own extract_javascript; then add a line offset in order to yield the
correct line number.
"""
content = fileobj.read()
found = XMLJS_EXPR.finditer(content)
index = 0