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
235 235 self.assertEqual("""<html> 236 236 <p>Für Details siehe bitte <a href="help.html"><em>Hilfeseite</em></a>.</p> 237 237 </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()) 238 266 239 267 def test_extract_i18n_msg_empty(self): 240 268 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" -
genshi/filters/i18n.py
1015 1015 while events: 1016 1016 event = events.pop(0) 1017 1017 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 1018 1026 yield event 1019 1027 else: 1020 1028 if not string: … … 1024 1032 yield self.values[part] 1025 1033 elif part: 1026 1034 yield TEXT, part, (None, -1, -1) 1035 # set string to None since we already handled it 1036 string = None 1027 1037 if not self.events[order] or not self.events[order][0]: 1028 1038 break 1029 1039 1030 1031 1040 def parse_msg(string, regex=re.compile(r'(?:\[(\d+)\:)|\]')): 1032 1041 """Parse a translated message using Genshi mixed content message 1033 1042 formatting.
