]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Modify to perform "---" to "—" conversion outside of
authorFred Drake <fdrake@acm.org>
Tue, 18 May 1999 17:34:51 +0000 (17:34 +0000)
committerFred Drake <fdrake@acm.org>
Tue, 18 May 1999 17:34:51 +0000 (17:34 +0000)
verbatim-like environments.  The list of verbatim-like environments is
a defined by a variable in main().

Doc/tools/sgmlconv/esis2sgml.py

index aea99626ebda04593a3bd93f05f84fcd3fcba388..aabbe7160a9f9cb816dca811d4b634642bd06e24 100755 (executable)
@@ -77,7 +77,7 @@ def istoken(s):
     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 = {}
@@ -85,6 +85,7 @@ def do_convert(ifp, ofp, xml=0, autoclose=()):
     knownempties = []
     knownempty = 0
     lastempty = 0
+    inverbatim = 0
     while 1:
         line = ifp.readline()
         if not line:
@@ -96,7 +97,10 @@ def do_convert(ifp, ofp, xml=0, autoclose=()):
             data = data[:-1]
         if type == "-":
             data = esistools.decode(data)
-            ofp.write(escape(data))
+            data = escape(data)
+            if not inverbatim:
+                data = string.replace(data, "---", "&mdash;")
+            ofp.write(data)
             if "\n" in data:
                 lastopened = None
             knownempty = 0
@@ -117,6 +121,7 @@ def do_convert(ifp, ofp, xml=0, autoclose=()):
             lastopened = data
             lastempty = knownempty
             knownempty = 0
+            inverbatim = data in verbatims
         elif type == ")":
             if data == "COMMENT":
                 ofp.write("-->")
@@ -134,6 +139,7 @@ def do_convert(ifp, ofp, xml=0, autoclose=()):
                     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)
@@ -156,12 +162,14 @@ def dump_empty_element_names(knownempties):
     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):
@@ -184,6 +192,7 @@ def main():
     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",
@@ -243,7 +252,7 @@ def main():
     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