return _token_rx.match(s) is not None
-def do_convert(ifp, ofp, xml=0, autoclose=()):
+def do_convert(ifp, ofp, xml=0, autoclose=(), verbatims=()):
if xml:
autoclose = ()
attrs = {}
knownempties = []
knownempty = 0
lastempty = 0
+ inverbatim = 0
while 1:
line = ifp.readline()
if not line:
data = data[:-1]
if type == "-":
data = esistools.decode(data)
- ofp.write(escape(data))
+ data = escape(data)
+ if not inverbatim:
+ data = string.replace(data, "---", "—")
+ ofp.write(data)
if "\n" in data:
lastopened = None
knownempty = 0
lastopened = data
lastempty = knownempty
knownempty = 0
+ inverbatim = data in verbatims
elif type == ")":
if data == "COMMENT":
ofp.write("-->")
ofp.write("</%s>" % data)
lastopened = None
lastempty = 0
+ inverbatim = 0
elif type == "A":
name, type, value = string.split(data, " ", 2)
name = map_gi(name, _attr_map)
fp.close()
-def sgml_convert(ifp, ofp, autoclose):
- return do_convert(ifp, ofp, xml=0, autoclose=autoclose)
+def sgml_convert(ifp, ofp, autoclose, verbatims):
+ return do_convert(ifp, ofp, xml=0,
+ autoclose=autoclose, verbatims=verbatims)
-def xml_convert(ifp, ofp, autoclose):
- return do_convert(ifp, ofp, xml=1, autoclose=autoclose)
+def xml_convert(ifp, ofp, autoclose, verbatims):
+ return do_convert(ifp, ofp, xml=1,
+ autoclose=autoclose, verbatims=verbatims)
def update_gi_map(map, names, fromsgml=1):
elem_names = ''
attr_names = ''
value_names = ''
+ verbatims = ('verbatim', 'interactive-session')
opts, args = getopt.getopt(sys.argv[1:], "adesx",
["autoclose=", "declare", "sgml", "xml",
"elements-map=", "attributes-map",
try:
if xml and xmldecl:
opf.write('<?xml version="1.0" encoding="iso8859-1"?>\n')
- convert(ifp, ofp, autoclose)
+ convert(ifp, ofp, autoclose, verbatims)
except IOError, (err, msg):
if err != errno.EPIPE:
raise