Mercurial > cpython-lru_cache-weakref
view Tools/scripts/parseentities.py @ 52039:bebc4eef9e89
Blocked revisions 70166-70167,70169,70176,70178,70197 via svnmerge
........
r70166 | georg.brandl | 2009-03-04 12:24:41 -0600 (Wed, 04 Mar 2009) | 2 lines
Remove obsolete stuff from string module docs.
........
r70167 | ronald.oussoren | 2009-03-04 15:07:19 -0600 (Wed, 04 Mar 2009) | 2 lines
Fix issue 5224.
........
r70169 | ronald.oussoren | 2009-03-04 15:12:17 -0600 (Wed, 04 Mar 2009) | 2 lines
Fix for issue 5226.
........
r70176 | ronald.oussoren | 2009-03-04 15:35:05 -0600 (Wed, 04 Mar 2009) | 2 lines
Fixes issues 3883 and 5194
........
r70178 | ronald.oussoren | 2009-03-04 16:49:36 -0600 (Wed, 04 Mar 2009) | 2 lines
Fix for issue #1113328.
........
r70197 | jesus.cea | 2009-03-05 13:37:37 -0600 (Thu, 05 Mar 2009) | 1 line
Minor bsddb documentation glitch
........
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Thu, 05 Mar 2009 22:53:54 +0000 |
| parents | 893a4dc17a91 |
| children | fcfe324663a6 |
line wrap: on
line source
#!/usr/local/bin/python """ Utility for parsing HTML entity definitions available from: http://www.w3.org/ as e.g. http://www.w3.org/TR/REC-html40/HTMLlat1.ent Input is read from stdin, output is written to stdout in form of a Python snippet defining a dictionary "entitydefs" mapping literal entity name to character or numeric entity. Marc-Andre Lemburg, mal@lemburg.com, 1999. Use as you like. NO WARRANTIES. """ import re,sys import TextTools entityRE = re.compile('<!ENTITY +(\w+) +CDATA +"([^"]+)" +-- +((?:.|\n)+?) *-->') def parse(text,pos=0,endpos=None): pos = 0 if endpos is None: endpos = len(text) d = {} while 1: m = entityRE.search(text,pos,endpos) if not m: break name,charcode,comment = m.groups() d[name] = charcode,comment pos = m.end() return d def writefile(f,defs): f.write("entitydefs = {\n") items = sorted(defs.items()) for name, (charcode,comment) in items: if charcode[:2] == '&#': code = int(charcode[2:-1]) if code < 256: charcode = "'\%o'" % code else: charcode = repr(charcode) else: charcode = repr(charcode) comment = TextTools.collapse(comment) f.write(" '%s':\t%s, \t# %s\n" % (name,charcode,comment)) f.write('\n}\n') if __name__ == '__main__': if len(sys.argv) > 1: infile = open(sys.argv[1]) else: infile = sys.stdin if len(sys.argv) > 2: outfile = open(sys.argv[2],'w') else: outfile = sys.stdout text = infile.read() defs = parse(text) writefile(outfile,defs)
