Hi Daiki > Reported by Piotr Drąg at: <https://savannah.gnu.org/bugs/?40125>. > * src/xgettext.h (enum lexical_context_ty): New enumeration items > lc_xml_open_tag, lc_xml_close_tag, lc_xml_content. > * src/x-javascript.c (phase5_scan_xml_markup): New > function. > (phase5_get): Handle '<', '>', '/', '=', '{', and '}' specially > to support E4X.
The patch looks good: It shouldn't affect the non-E4X JavaScript code. By introducing the phase5_get it is implemented in a sane way. I've run it over our code base and it works as expected. Finally I played a bit with it, so I end up with more checks in the xgettext-javascript-6 test file. The patch is attached. Regards, Andy
>From 698097d011290d2148736f103de531ebed48b37e Mon Sep 17 00:00:00 2001 From: Andreas Stricker <[email protected]> Date: Fri, 29 Nov 2013 01:13:50 +0100 Subject: [PATCH] JavaScript E4X: Add more tests --- gettext-tools/tests/xgettext-javascript-6 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) mode change 100644 => 100755 gettext-tools/tests/xgettext-javascript-6 diff --git a/gettext-tools/tests/xgettext-javascript-6 b/gettext-tools/tests/xgettext-javascript-6 old mode 100644 new mode 100755 index a891ebe..0ef5ffe --- a/gettext-tools/tests/xgettext-javascript-6 +++ b/gettext-tools/tests/xgettext-javascript-6 @@ -22,6 +22,13 @@ var x5 = <!-- - _("Unexpected translation string #2") - -->; var s6 = _("Expected translation string #4"); var x6 = <? _("Unexpected translation string #3") ?>; var x7 = <!--- this is a comment --> <foo> +var s7 = "<{x6}>_("Unexpected translation string #4")</{x6}>" + + "<!-- _("Unexpected translation string #5") --!>" + + _("Expected translation string #5"); +var s8 = _("<x7>Expected translation string #6</x7>"); +var x8 = <x8><x9>{_("<x8>{Expected translation string #7}</x8>")}</x9></x8> +var x9 = <x10 attr='{_("Unexpected translation string #6")}'><x11>data</x11></x10>; +var s9 = _("Expected translation string #8"); </foo>; EOF @@ -64,6 +71,18 @@ msgstr "" msgid "Expected translation string #4" msgstr "" + +msgid "Expected translation string #5" +msgstr "" + +msgid "<x7>Expected translation string #6</x7>" +msgstr "" + +msgid "<x8>{Expected translation string #7}</x8>" +msgstr "" + +msgid "Expected translation string #8" +msgstr "" EOF : ${DIFF=diff} -- 1.7.10.4
