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

Reply via email to