Edgewall Software

Ticket #278: label_with_nested_input_failing_test_case_and_possible_fix.patch

File label_with_nested_input_failing_test_case_and_possible_fix.patch, 3.2 KB (added by palgarvio, 15 years ago)
  • genshi/filters/tests/i18n.py

     
    235235        self.assertEqual("""<html>
    236236          <p>Für Details siehe bitte <a href="help.html"><em>Hilfeseite</em></a>.</p>
    237237        </html>""", tmpl.generate().render())
     238       
     239    def test_extract_i18n_msg_label_with_nested_input(self):
     240        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
     241            xmlns:i18n="http://genshi.edgewall.org/i18n">
     242          <div i18n:msg="">
     243            <label><input type="text" size="3" name="daysback" value="30" /> days back</label>
     244          </div>
     245        </html>""")
     246        translator = Translator()
     247        tmpl.add_directives(Translator.NAMESPACE, translator)
     248        messages = list(translator.extract(tmpl.stream))
     249        self.assertEqual(1, len(messages))
     250        self.assertEqual('[1:[2:] days back]',
     251                         messages[0][2])
     252
     253    def test_translate_i18n_msg_label_with_nested_input(self):
     254        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
     255            xmlns:i18n="http://genshi.edgewall.org/i18n">
     256          <div i18n:msg="">
     257            <label><input type="text" size="3" name="daysback" value="30" /> foo bar</label>
     258          </div>
     259        </html>""")
     260        gettext = lambda s: "[1:[2:] foo bar]"
     261        translator = Translator(gettext)
     262        setup_i18n(tmpl, translator)
     263        self.assertEqual("""<html>
     264          <div><label><input type="text" size="3" name="daysback" value="30"/> foo bar</label></div>
     265        </html>""", tmpl.generate().render())
    238266
    239267    def test_extract_i18n_msg_empty(self):
    240268        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
  • genshi/filters/i18n.py

     
    10151015            while events:
    10161016                event = events.pop(0)
    10171017                if event:
     1018                    if event[0] is END and string:
     1019                        for idx, part in enumerate(regex.split(string)):
     1020                            if idx % 2:
     1021                                yield self.values[part]
     1022                            elif part:
     1023                                yield TEXT, part, (None, -1, -1)
     1024                        # set string to None since we already handled it
     1025                        string = None
    10181026                    yield event
    10191027                else:
    10201028                    if not string:
     
    10241032                            yield self.values[part]
    10251033                        elif part:
    10261034                            yield TEXT, part, (None, -1, -1)
     1035                    # set string to None since we already handled it
     1036                    string = None
    10271037                    if not self.events[order] or not self.events[order][0]:
    10281038                        break
    10291039
    1030 
    10311040def parse_msg(string, regex=re.compile(r'(?:\[(\d+)\:)|\]')):
    10321041    """Parse a translated message using Genshi mixed content message
    10331042    formatting.