X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ovsdb%2Fovsdb-doc.in;h=aa4fae2e6c26ac1d25246ddb407c5f05711b2fe4;hb=8d71683b7632b5b621dd21418bf33ff90865b4e0;hp=cb21c1f40d34b1c3433db22a251c4f9b951fff51;hpb=a0bc29a541fc7dc6e20137d5558e2094d614e6ab;p=sliver-openvswitch.git diff --git a/ovsdb/ovsdb-doc.in b/ovsdb/ovsdb-doc.in index cb21c1f40..aa4fae2e6 100755 --- a/ovsdb/ovsdb-doc.in +++ b/ovsdb/ovsdb-doc.in @@ -7,16 +7,20 @@ 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): +def textToNroff(s, font=r'\fR'): def escape(match): c = match.group(0) + if c.startswith('-'): + if c != '-' or font == r'\fB': + return '\\' + c + else: + return '-' if c == '\\': return r'\e' elif c == '"': @@ -24,21 +28,22 @@ def textToNroff(s): elif c == "'": return r'\(cq' else: - raise Error("bad escape") + raise error.Error("bad escape") - s = re.sub('([\\\\"\'])', escape, s) + # Escape - \ " ' as needed by nroff. + s = re.sub('(-[0-9]|[-"\'\\\\])', escape, s) if s.startswith('.'): s = '\\' + s return s def escapeNroffLiteral(s): - return r'\fB%s\fR' % textToNroff(s) + return r'\fB%s\fR' % textToNroff(s, r'\fB') def inlineXmlToNroff(node, font): if node.nodeType == node.TEXT_NODE: - return textToNroff(node.data) + 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') @@ -47,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' @@ -60,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 = '' @@ -71,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("