mirror of
https://https.git.savannah.gnu.org/git/gettext.git
synced 2026-01-30 03:14:34 +00:00
Reported by Ben <gnu@mail.qoben.com> at <https://savannah.gnu.org/bugs/?61596>. * gettext-tools/src/x-python.c (P7_498_START_OF_EXPRESSION): New macro. (token_type_498, token_type_l498, token_type_m498, token_type_r498): New enum items. (free_token): Treat token_type_498 like token_type_string. (phase7_getuc): Accept an f_string parameter. Use it to combine {{ to { and }} to }. (f_string_depth): New variable. (struct f_string_level): New type. (f_string_stack, f_string_stack_alloc): New variables. (new_f_string_level): New function. (open_pb): Renamed from open_pbb. (phase5_get): Consider also the f_string_stack. Accept f"...", fr"...", rf"..." syntax. Recognize tokens of type token_type_498, token_type_l498, token_type_m498, token_type_r498. (x_python_lex): Treat token_type_498 like token_type_string. (extract_balanced): Handle the new token types. (extract_python): Initialize f_string_depth and the f_string_stack. * gettext-tools/tests/xgettext-python-1: Test also the backslash handling in f-strings. * gettext-tools/tests/xgettext-python-8: New file. * gettext-tools/tests/Makefile.am (TESTS): Add it. * gettext-tools/doc/lang-python.texi (Python): Explain the limitations of f-string support. * NEWS: Mention the change.
74 lines
1.7 KiB
Bash
Executable File
74 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
. "${srcdir=.}/init.sh"; path_prepend_ . ../src
|
|
|
|
# Test of Python f-string support.
|
|
|
|
cat <<\EOF > xg-py-8.py
|
|
s0 = _(fr'An f-string without substitutions');
|
|
s1 = _(fr'''An f-string with
|
|
embedded
|
|
newlines''');
|
|
s2 = _(fr'An f-string with {n} substitutions');
|
|
s3 = _(fr'An f-string with several substitutions: {a} and {b} and {c} and so on');
|
|
s4 = fr"that's a valid string. " + _('This too');
|
|
s5 = fr'''a{fr'b{fr"c"+d}'}e''';
|
|
s6 = _("a normal string");
|
|
s7 = fr'abc{foo({},_('should be extracted'))}xyz';
|
|
return _("first normal string") + fr'{foo}' + _("second normal string");
|
|
EOF
|
|
|
|
: ${XGETTEXT=xgettext}
|
|
${XGETTEXT} --add-comments --no-location -o xg-py-8.tmp xg-py-8.py 2>xg-py-8.err
|
|
test $? = 0 || { cat xg-py-8.err; Exit 1; }
|
|
func_filter_POT_Creation_Date xg-py-8.tmp xg-py-8.pot
|
|
|
|
cat <<\EOF > xg-py-8.ok
|
|
# SOME DESCRIPTIVE TITLE.
|
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
# This file is distributed under the same license as the PACKAGE package.
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
#
|
|
#, fuzzy
|
|
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
"Report-Msgid-Bugs-To: \n"
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
"Language: \n"
|
|
"MIME-Version: 1.0\n"
|
|
"Content-Type: text/plain; charset=CHARSET\n"
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
msgid "An f-string without substitutions"
|
|
msgstr ""
|
|
|
|
msgid ""
|
|
"An f-string with\n"
|
|
"embedded\n"
|
|
"newlines"
|
|
msgstr ""
|
|
|
|
msgid "This too"
|
|
msgstr ""
|
|
|
|
msgid "a normal string"
|
|
msgstr ""
|
|
|
|
msgid "should be extracted"
|
|
msgstr ""
|
|
|
|
msgid "first normal string"
|
|
msgstr ""
|
|
|
|
msgid "second normal string"
|
|
msgstr ""
|
|
EOF
|
|
|
|
: ${DIFF=diff}
|
|
${DIFF} xg-py-8.ok xg-py-8.pot
|
|
result=$?
|
|
|
|
exit $result
|