[Zope-Checkins] SVN: Zope/trunk/lib/python/TAL/TALInterpreter.py
avoid a number of superfluous differences between the Zope 2
and Zope 3
Fred L. Drake, Jr.
fdrake at gmail.com
Tue Aug 9 17:37:44 EDT 2005
Log message for revision 37824:
avoid a number of superfluous differences between the Zope 2 and Zope 3
implementations of the TAL interpreter
Changed:
U Zope/trunk/lib/python/TAL/TALInterpreter.py
-=-
Modified: Zope/trunk/lib/python/TAL/TALInterpreter.py
===================================================================
--- Zope/trunk/lib/python/TAL/TALInterpreter.py 2005-08-09 21:13:26 UTC (rev 37823)
+++ Zope/trunk/lib/python/TAL/TALInterpreter.py 2005-08-09 21:37:44 UTC (rev 37824)
@@ -31,25 +31,21 @@
from TALGenerator import TALGenerator
from TranslationContext import TranslationContext
-BOOLEAN_HTML_ATTRS = [
+# This will become (MessageID, Message) when we use Zope 3.1 as a base:
+I18nMessageTypes = MessageID
+
+# TODO: In Python 2.4 we can use frozenset() instead of dict.fromkeys()
+BOOLEAN_HTML_ATTRS = dict.fromkeys([
# List of Boolean attributes in HTML that should be rendered in
# minimized form (e.g. <img ismap> rather than <img ismap="">)
# From http://www.w3.org/TR/xhtml1/#guidelines (C.10)
- # XXX The problem with this is that this is not valid XML and
+ # TODO: The problem with this is that this is not valid XML and
# can't be parsed back!
"compact", "nowrap", "ismap", "declare", "noshade", "checked",
"disabled", "readonly", "multiple", "selected", "noresize",
"defer"
-]
+])
-def _init():
- d = {}
- for s in BOOLEAN_HTML_ATTRS:
- d[s] = 1
- return d
-
-BOOLEAN_HTML_ATTRS = _init()
-
_nulljoin = ''.join
_spacejoin = ' '.join
@@ -502,7 +498,7 @@
if text is self.Default:
self.interpret(stuff[1])
return
- if isinstance(text, MessageID):
+ if isinstance(text, I18nMessageTypes):
# Translate this now.
text = self.engine.translate(text.domain, text, text.mapping)
s = cgi.escape(text)
@@ -537,8 +533,8 @@
else:
value = self.engine.evaluate(expression)
- # evaluate() does not do any I18n, so we do it here.
- if isinstance(value, MessageID):
+ # evaluate() does not do any I18n, so we do it here.
+ if isinstance(value, I18nMessageTypes):
# Translate this now.
value = self.engine.translate(value.domain, value,
value.mapping)
@@ -589,8 +585,8 @@
if len(stuff) > 2:
obj = self.engine.evaluate(stuff[2])
xlated_msgid = self.translate(msgid, default, i18ndict, obj)
- # XXX I can't decide whether we want to cgi escape the translated
- # string or not. OT1H not doing this could introduce a cross-site
+ # TODO: I can't decide whether we want to cgi escape the translated
+ # string or not. OTOH not doing this could introduce a cross-site
# scripting vector by allowing translators to sneak JavaScript into
# translations. OTOH, for implicit interpolation values, we don't
# want to escape stuff like ${name} <= "<b>Timmy</b>".
@@ -654,7 +650,7 @@
i18ndict.update(obj)
if not self.i18nInterpolate:
return msgid
- # XXX We need to pass in one of context or target_language
+ # TODO: We need to pass in one of context or target_language
return self.engine.translate(self.i18nContext.domain,
msgid, i18ndict, default=default)
More information about the Zope-Checkins
mailing list