X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ovsdb%2Fovsdb-doc.in;h=7b783e1a0414c9e29b329c3b30ec44133b844ae8;hb=e615b0a347057f9af7e93922acd4ae794ac87015;hp=4950e47e4ce90a1f3b199f0d46677dc377df2f3f;hpb=f8d739a9fa1c1223f0b2c88fd3f0ed47be69bf65;p=openvswitch diff --git a/ovsdb/ovsdb-doc.in b/ovsdb/ovsdb-doc.in index 4950e47e..7b783e1a 100755 --- a/ovsdb/ovsdb-doc.in +++ b/ovsdb/ovsdb-doc.in @@ -7,19 +7,18 @@ import re import sys import xml.dom.minidom -sys.path.insert(0, "@abs_top_srcdir@/ovsdb") -import simplejson as json - -from OVSDB import * +import ovs.json +from ovs.db import error +import ovs.db.schema argv0 = sys.argv[0] def textToNroff(s, font=r'\fR'): def escape(match): c = match.group(0) - if c == '-': - if font == r'\fB': - return r'\-' + if c.startswith('-'): + if c != '-' or font == r'\fB': + return '\\' + c else: return '-' if c == '\\': @@ -29,10 +28,10 @@ def textToNroff(s, font=r'\fR'): elif c == "'": return r'\(cq' else: - raise Error("bad escape") + raise error.Error("bad escape") # Escape - \ " ' as needed by nroff. - s = re.sub('([-"\'\\\\])', escape, s) + s = re.sub('(-[0-9]|[-"\'\\\\])', escape, s) if s.startswith('.'): s = '\\' + s return s @@ -44,7 +43,7 @@ def inlineXmlToNroff(node, font): if node.nodeType == node.TEXT_NODE: return textToNroff(node.data, font) elif node.nodeType == node.ELEMENT_NODE: - if node.tagName == 'code' or node.tagName == 'em': + if node.tagName in ['code', 'em', 'option']: s = r'\fB' for child in node.childNodes: s += inlineXmlToNroff(child, r'\fB') @@ -53,12 +52,14 @@ def inlineXmlToNroff(node, font): s = r'\fB' if node.hasAttribute('column'): s += node.attributes['column'].nodeValue + if node.hasAttribute('key'): + s += ':' + node.attributes['key'].nodeValue elif node.hasAttribute('table'): s += node.attributes['table'].nodeValue elif node.hasAttribute('group'): s += node.attributes['group'].nodeValue else: - raise Error("'ref' lacks column and table attributes") + raise error.Error("'ref' lacks required attributes: %s" % node.attributes.keys()) return s + font elif node.tagName == 'var': s = r'\fI' @@ -66,9 +67,9 @@ def inlineXmlToNroff(node, font): s += inlineXmlToNroff(child, r'\fI') return s + font else: - raise Error("element <%s> unknown or invalid here" % node.tagName) + raise error.Error("element <%s> unknown or invalid here" % node.tagName) else: - raise Error("unknown node %s in inline xml" % node) + raise error.Error("unknown node %s in inline xml" % node) def blockXmlToNroff(nodes, para='.PP'): s = '' @@ -77,17 +78,23 @@ def blockXmlToNroff(nodes, para='.PP'): s += textToNroff(node.data) s = s.lstrip() elif node.nodeType == node.ELEMENT_NODE: - if node.tagName == 'ul': + if node.tagName in ['ul', 'ol']: if s != "": s += "\n" s += ".RS\n" + i = 0 for liNode in node.childNodes: if (liNode.nodeType == node.ELEMENT_NODE and liNode.tagName == 'li'): - s += ".IP \\(bu\n" + blockXmlToNroff(liNode.childNodes, ".IP") + i += 1 + if node.tagName == 'ul': + s += ".IP \\(bu\n" + else: + s += ".IP %d. .25in\n" % i + s += blockXmlToNroff(liNode.childNodes, ".IP") elif (liNode.nodeType != node.TEXT_NODE or not liNode.data.isspace()): - raise Error("