[Zope-Checkins] CVS: Zope/lib/python/TAL - TALGenerator.py:1.68
Godefroid Chapelle
gotcha at swing.be
Wed Aug 20 18:32:15 EDT 2003
Update of /cvs-repository/Zope/lib/python/TAL
In directory cvs.zope.org:/tmp/cvs-serv32620
Modified Files:
TALGenerator.py
Log Message:
management of i18n:attributes was not similar
in both space and semicolon separated lists
=== Zope/lib/python/TAL/TALGenerator.py 1.67 => 1.68 ===
--- Zope/lib/python/TAL/TALGenerator.py:1.67 Mon Aug 18 12:53:08 2003
+++ Zope/lib/python/TAL/TALGenerator.py Wed Aug 20 17:32:14 2003
@@ -669,8 +669,8 @@
else:
repldict = {}
if i18nattrs:
- i18nattrs = _parseI18nAttributes(i18nattrs, attrlist, repldict,
- self.position, self.xml)
+ i18nattrs = _parseI18nAttributes(i18nattrs, attrlist, repldict, self.position,
+ self.xml, self.source_file)
else:
i18nattrs = {}
# Convert repldict's name-->expr mapping to a
@@ -678,9 +678,9 @@
for key, value in repldict.items():
if i18nattrs.get(key, None):
raise I18NError(
- ("attribute [%s] cannot both be part of tal:attributes"
- " and have a msgid in i18n:attributes") % key,
- position)
+ ("attribute [%s] cannot both be part of tal:attributes" +
+ " and have a msgid in i18n:attributes") % key,
+ position)
ce = self.compileExpression(value)
repldict[key] = ce, key in i18nattrs, i18nattrs.get(key)
for key in i18nattrs:
@@ -789,7 +789,7 @@
self.emitI18nVariable(varname)
# Do not test for "msgid is not None", i.e. we only want to test for
# explicit msgids here. See comment above.
- if msgid is not None:
+ if msgid is not None:
# in case tal:content, i18n:translate and i18n:name in the
# same tag insertTranslation opcode has already been
# emitted
@@ -817,55 +817,66 @@
self.emitDefineMacro(defineMacro)
-def _parseI18nAttributes(i18nattrs, attrlist, repldict, position, xml):
+def _parseI18nAttributes(i18nattrs, attrlist, repldict, position,
+ xml, source_file):
+
+ def addAttribute(dic, attr, msgid, position, xml):
+ if not xml:
+ attr = attr.lower()
+ if attr in dic:
+ raise TALError(
+ "attribute may only be specified once in i18n:attributes: %r"
+ % attr,
+ position)
+ dic[attr] = msgid
+
d = {}
if ';' in i18nattrs:
i18nattrlist = i18nattrs.split(';')
- i18nattrlist = [attr.strip().split()
- for attr in i18nattrlist if attr.strip()]
+ i18nattrlist = [attr.strip().split() for attr in i18nattrlist if attr.strip()]
for parts in i18nattrlist:
if len(parts) > 2:
- raise TALError(
- "illegal i18n:attributes specification: %r" % spec,
- position)
+ raise TALError("illegal i18n:attributes specification: %r" % parts,
+ position)
if len(parts) == 2:
attr, msgid = parts
else:
# len(parts) == 1
attr = parts[0]
msgid = None
- if not xml:
- attr = attr.lower()
- if attr in d:
- raise TALError(
- "attribute may only be specified once in i18n:attributes: "
- + `attr`,
- position)
- d[attr] = msgid
+ addAttribute(d, attr, msgid, position, xml)
else:
i18nattrlist = i18nattrs.split()
if len(i18nattrlist) == 2:
staticattrs = [attr[0] for attr in attrlist if len(attr) == 2]
- if ( (not i18nattrlist[1] in staticattrs)
- and (not i18nattrlist[1] in repldict)):
- attr, msgid = i18nattrlist
- d[attr] = msgid
+ if (not i18nattrlist[1] in staticattrs) and (not i18nattrlist[1] in repldict):
+ attr, msgid = i18nattrlist
+ addAttribute(d, attr, msgid, position, xml)
else:
import warnings
- warnings.warn(I18N_ATTRIBUTES_WARNING, DeprecationWarning)
+ warnings.warn('Space separated attributes in i18n:attributes'
+ + ' are deprecated (i18n:attributes="value title"). Please use'
+ + ' semicolon to separate attributes'
+ + ' (i18n:attributes="value; title").'
+ + '\nFile %s at row, column %s\nAttributes %s'
+ % (source_file, str(position), i18nattrs)
+ , DeprecationWarning)
+ msgid = None
for attr in i18nattrlist:
- d[attr] = None
- else:
+ addAttribute(d, attr, msgid, position, xml)
+ else:
import warnings
- warnings.warn(I18N_ATTRIBUTES_WARNING, DeprecationWarning)
+ warnings.warn('Space separated attributes in i18n:attributes'
+ + ' are deprecated (i18n:attributes="value title"). Please use'
+ + ' semicolon to separate attributes'
+ + ' (i18n:attributes="value; title").'
+ + '\nFile %s at row, column %s\nAttributes %s'
+ % (source_file, str(position), i18nattrs)
+ , DeprecationWarning)
+ msgid = None
for attr in i18nattrlist:
- d[attr] = None
+ addAttribute(d, attr, msgid, position, xml)
return d
-
-I18N_ATTRIBUTES_WARNING = (
- 'Space separated attributes in i18n:attributes are deprecated'
- ' (i18n:attributes="value title"). Please use a semicolon to'
- ' separate attributes (i18n:attributes="value; title").')
def test():
t = TALGenerator()
More information about the Zope-Checkins
mailing list