Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/parseentities.py @ 49955:878d40468c4e legacy-trunk
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
| author | Vinay Sajip <vinay_sajip@yahoo.co.uk> |
|---|---|
| date | Wed, 03 Dec 2008 23:22:58 +0000 |
| parents | 14a27acc755a |
| children | ef48e48f066e 893a4dc17a91 |
| rev | line source |
|---|---|
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 #!/usr/local/bin/python |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 """ Utility for parsing HTML entity definitions available from: |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 http://www.w3.org/ as e.g. |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 http://www.w3.org/TR/REC-html40/HTMLlat1.ent |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 Input is read from stdin, output is written to stdout in form of a |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 Python snippet defining a dictionary "entitydefs" mapping literal |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 entity name to character or numeric entity. |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
14657
diff
changeset
|
11 Marc-Andre Lemburg, mal@lemburg.com, 1999. |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 Use as you like. NO WARRANTIES. |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 """ |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 import re,sys |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 import TextTools |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 entityRE = re.compile('<!ENTITY +(\w+) +CDATA +"([^"]+)" +-- +((?:.|\n)+?) *-->') |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 def parse(text,pos=0,endpos=None): |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 pos = 0 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 if endpos is None: |
| 14657 | 24 endpos = len(text) |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 d = {} |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 while 1: |
| 14657 | 27 m = entityRE.search(text,pos,endpos) |
| 28 if not m: | |
| 29 break | |
| 30 name,charcode,comment = m.groups() | |
| 31 d[name] = charcode,comment | |
| 32 pos = m.end() | |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 return d |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 def writefile(f,defs): |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 f.write("entitydefs = {\n") |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 items = defs.items() |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 items.sort() |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 for name,(charcode,comment) in items: |
| 14657 | 41 if charcode[:2] == '&#': |
| 42 code = int(charcode[2:-1]) | |
| 43 if code < 256: | |
| 44 charcode = "'\%o'" % code | |
| 45 else: | |
| 46 charcode = repr(charcode) | |
| 47 else: | |
| 48 charcode = repr(charcode) | |
| 49 comment = TextTools.collapse(comment) | |
| 50 f.write(" '%s':\t%s, \t# %s\n" % (name,charcode,comment)) | |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 f.write('\n}\n') |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 if __name__ == '__main__': |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 if len(sys.argv) > 1: |
| 14657 | 55 infile = open(sys.argv[1]) |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 else: |
| 14657 | 57 infile = sys.stdin |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 if len(sys.argv) > 2: |
| 14657 | 59 outfile = open(sys.argv[2],'w') |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 else: |
| 14657 | 61 outfile = sys.stdout |
|
11210
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 text = infile.read() |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 defs = parse(text) |
|
cf7cd7b04fa6
Scrit by Marc-Andre Lemburg to generate htmlentitydefs.py.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 writefile(outfile,defs) |
