Changeset 1689

Show
Ignore:
Timestamp:
07/28/06 16:44:50 (2 years ago)
Author:
elvelind
Message:

fix #242. Problems with I18N and (X)HTML entities

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.0/turbogears/toolbox/admi18n/pygettext.py

    r1498 r1689  
    168168import tokenize 
    169169import operator 
    170  
    171 from elementtree.ElementTree import ElementTree 
     170import codecs 
     171 
     172from elementtree.ElementTree import ElementTree, XML 
     173from turbogears.util import fixentities 
    172174 
    173175__version__ = '1.5' 
     
    517519        f = None 
    518520        try: 
    519             f = ElementTree(file=self.__curfile) 
     521            file = open(self.__curfile) 
     522            f = ElementTree(XML( fixentities(file.read() ))) 
    520523        except Exception, e: 
    521524            print 'Skip %s: %s' % (self.__curfile, e) 
    522525            return 
     526 
    523527        node = f.getroot() 
    524528        self.get_text_node(node) 
  • branches/1.0/turbogears/util.py

    r1591 r1689  
    11import os 
    22import sys 
     3import re 
     4import htmlentitydefs 
    35from inspect import getargspec, getargvalues 
    46from itertools import izip, islice, chain, imap 
     
    395397        return value 
    396398 
     399def fixentities(htmltext): 
     400    # replace HTML character entities with numerical references 
     401    # note: this won't handle CDATA sections properly 
     402    def repl(m): 
     403        entity = htmlentitydefs.entitydefs.get(m.group(1).lower()) 
     404        if not entity: 
     405            return m.group(0) 
     406        elif len(entity) == 1: 
     407            if entity in "&<>'\"": 
     408                return m.group(0) 
     409            return "&#%d;" % ord(entity) 
     410        else: 
     411            return entity 
     412    return re.sub("&(\w+);?", repl, htmltext) 
     413 
     414 
    397415__all__ = ["Enum", "setlike",  
    398416           "get_package_name", "get_model", "load_project_config",