xgettext: Respect ITS escape rule for attributes

* gettext-tools/src/its.c (its_rule_list_extract_text): Check for
"escape" value for an attribute node.
* gettext-tools/tests/xgettext-its-1: Add tests for gt:escapeRule.
This commit is contained in:
Daiki Ueno
2015-12-10 16:34:52 +09:00
parent 660d9c6bc5
commit 031cc2acb6
2 changed files with 25 additions and 1 deletions
+4 -1
View File
@@ -1661,10 +1661,13 @@ its_rule_list_extract_text (its_rule_list_ty *rules,
comment = xstrdup (value);
else
{
value = its_value_list_get_value (values, "escape");
no_escape = value != NULL && strcmp (value, "no") == 0;
value = its_value_list_get_value (values, "locNotePointer");
if (value)
comment = _its_get_content (rules, node, value, ITS_WHITESPACE_TRIM,
false);
no_escape);
}
if (comment != NULL && *comment != '\0')
+21
View File
@@ -99,6 +99,11 @@ cat <<\EOF > its/messages.its
<gt:contextRule selector="//msg:p[@context = 'yes']"
contextPointer="substring-before(., '|')"
textPointer="substring-after(., '|')"/>
<gt:escapeRule selector="//msg:message/*[@unescape = 'yes']" escape="no"/>
<its:translateRule selector="//msg:message/@unescaped" translate="yes"/>
<gt:escapeRule selector="//msg:message/@unescaped" escape="no"/>
</its:rules>
EOF
@@ -160,6 +165,12 @@ cat <<\EOF >messages.xml
but not middle
</p>
</message>
<message>
<p unescape="yes">This is an unescaped element &lt;&gt;&amp;&quot;</p>
</message>
<message unescaped="This is an unescaped attribute &lt;&gt;&amp;&quot;">
<p></p>
</message>
</messages>
EOF
@@ -226,6 +237,16 @@ msgid ""
"Leading/trailing whitespaces are removed,\n"
" but not middle"
msgstr ""
#. (itstool) path: message/p
#: messages.xml:59
msgid "This is an unescaped element <>&\""
msgstr ""
#. (itstool) path: messages/message@unescaped
#: messages.xml:61
msgid "This is an unescaped attribute <>&\""
msgstr ""
EOF
: ${DIFF=diff}