27 from omniidl_be.python
import output_inline
28 from omniidl_be.python
import run
as run_parent
29 from omniidl
import idlvisitor, idlast, idltype
33 li = s.rsplit(old, occurrence)
41 self.commentStart = re.compile(
r"^//+ ?")
43 def _commentToConst(self, node, comments):
50 for c
in reversed(comments):
51 if line - c.line() != 1:
56 texts.append(re.sub(self.commentStart,
"", text))
58 if isinstance(node, idlast.Attribute):
59 for i
in node.identifiers():
60 print(i +
" documentation may be ill-formed.")
62 print(node.identifier() +
" documentation may be ill-formed.")
66 if isinstance(node, idlast.Operation):
67 with open(node.file())
as fp:
68 for _
in range(node.line() - 1):
71 texts.append(
"\nPrototype:\t" + line)
76 texts.append(
" \t" + line)
82 id = node.identifier() +
"__doc__"
90 node.scopedName()[:-1]
94 _rreplace(node.repoId(), node.identifier(), id, 1),
100 def _addDoc(self, parent, node):
104 const = self._commentToConst(node, node.comments())
107 if isinstance(parent, idlast.Module):
108 parent._Module__definitions.append(const)
109 elif isinstance(parent, idlast.Interface):
110 parent._Interface__declarations.append(const)
111 parent._Interface__contents.append(const)
112 elif isinstance(parent, idlast.AST):
113 parent._AST__declarations.append(const)
115 print(
"%s:%s: warning: doc ignored" % (node.file(), node.line()))
117 def visitAST(self, node):
118 for n
in node.declarations():
119 if not output_inline
and not n.mainFile():
122 if isinstance(n, idlast.Module)
or isinstance(n, idlast.Interface):
123 self._addDoc(node, n)
126 def visitModule(self, node):
127 for n
in node.definitions():
128 if not output_inline
and not n.mainFile():
131 if isinstance(n, idlast.Module)
or isinstance(n, idlast.Interface):
132 self._addDoc(node, n)
135 def visitInterface(self, node):
136 for c
in node.callables():
137 self._addDoc(node, c)
144 run_parent(tree, args)