mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-18 13:30:33 +00:00
docgen2 improvements
This commit is contained in:
@@ -18,7 +18,7 @@ import
|
||||
|
||||
type
|
||||
TSections = array[TSymKind, PRope]
|
||||
TDocumentor* = object of rstgen.TRstGenerator
|
||||
TDocumentor = object of rstgen.TRstGenerator
|
||||
modDesc: PRope # module description
|
||||
id: int # for generating IDs
|
||||
toc, section: TSections
|
||||
@@ -148,12 +148,12 @@ proc isVisible(n: PNode): bool =
|
||||
result = {sfExported, sfFromGeneric, sfForward}*n.sym.flags == {sfExported}
|
||||
elif n.kind == nkPragmaExpr:
|
||||
result = isVisible(n.sons[0])
|
||||
|
||||
|
||||
proc getName(d: PDoc, n: PNode, splitAfter = -1): string =
|
||||
case n.kind
|
||||
of nkPostfix: result = getName(d, n.sons[1], splitAfter)
|
||||
of nkPragmaExpr: result = getName(d, n.sons[0], splitAfter)
|
||||
of nkSym: result = esc(d.target, n.sym.name.s, splitAfter)
|
||||
of nkSym: result = esc(d.target, n.sym.renderDefinitionName, splitAfter)
|
||||
of nkIdent: result = esc(d.target, n.ident.s, splitAfter)
|
||||
of nkAccQuoted:
|
||||
result = esc(d.target, "`")
|
||||
@@ -167,7 +167,7 @@ proc getRstName(n: PNode): PRstNode =
|
||||
case n.kind
|
||||
of nkPostfix: result = getRstName(n.sons[1])
|
||||
of nkPragmaExpr: result = getRstName(n.sons[0])
|
||||
of nkSym: result = newRstNode(rnLeaf, n.sym.name.s)
|
||||
of nkSym: result = newRstNode(rnLeaf, n.sym.renderDefinitionName)
|
||||
of nkIdent: result = newRstNode(rnLeaf, n.ident.s)
|
||||
of nkAccQuoted:
|
||||
result = getRstName(n.sons[0])
|
||||
|
||||
@@ -107,7 +107,7 @@ proc CommandDoc2 =
|
||||
msgs.gErrorMax = high(int) # do not stop after first error
|
||||
semanticPasses()
|
||||
registerPass(docgen2Pass())
|
||||
registerPass(cleanupPass())
|
||||
#registerPass(cleanupPass())
|
||||
compileProject(mainCommandArg())
|
||||
finishDoc2Pass(gProjectFull)
|
||||
|
||||
|
||||
@@ -44,6 +44,17 @@ proc getNextTok*(r: var TSrcGen, kind: var TTokType, literal: var string)
|
||||
# determines how long the subtree will likely be, the second
|
||||
# phase appends to a buffer that will be the output.
|
||||
|
||||
proc isKeyword*(s: string): bool =
|
||||
var i = getIdent(s)
|
||||
if (i.id >= ord(tokKeywordLow) - ord(tkSymbol)) and
|
||||
(i.id <= ord(tokKeywordHigh) - ord(tkSymbol)):
|
||||
result = true
|
||||
|
||||
proc renderDefinitionName*(s: PSym): string =
|
||||
let x = s.name.s
|
||||
if x[0] in SymStartChars and not renderer.isKeyword(x): result = x
|
||||
else: result = '`' & x & '`'
|
||||
|
||||
const
|
||||
IndentWidth = 2
|
||||
longIndentWid = 4
|
||||
@@ -633,11 +644,14 @@ proc gcase(g: var TSrcGen, n: PNode) =
|
||||
|
||||
proc gproc(g: var TSrcGen, n: PNode) =
|
||||
var c: TContext
|
||||
gsub(g, n.sons[0])
|
||||
if n.sons[namePos].kind == nkSym:
|
||||
put(g, tkSymbol, renderDefinitionName(n.sons[namePos].sym))
|
||||
else:
|
||||
gsub(g, n.sons[namePos])
|
||||
gsub(g, n.sons[1])
|
||||
gsub(g, n.sons[2])
|
||||
gsub(g, n.sons[3])
|
||||
if not (renderNoBody in g.flags):
|
||||
if renderNoBody notin g.flags:
|
||||
if n.sons[4].kind != nkEmpty:
|
||||
put(g, tkSpaces, Space)
|
||||
putWithSpace(g, tkEquals, "=")
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# distribution, for details about the copyright.
|
||||
#
|
||||
|
||||
## Atomic operations for Nimrod.
|
||||
# Atomic operations for Nimrod.
|
||||
|
||||
when (defined(gcc) or defined(llvm_gcc)) and hasThreadSupport and
|
||||
not defined(windows):
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# distribution, for details about the copyright.
|
||||
#
|
||||
|
||||
## not really an AVL tree anymore, but still balanced ...
|
||||
# not really an AVL tree anymore, but still balanced ...
|
||||
|
||||
template IsBottom(n: PAvlNode): bool = n == bottom
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
# distribution, for details about the copyright.
|
||||
#
|
||||
|
||||
## Pragmas for RTL generation. Has to be an include, because user-defined
|
||||
## pragmas cannot be exported.
|
||||
# Pragmas for RTL generation. Has to be an include, because user-defined
|
||||
# pragmas cannot be exported.
|
||||
|
||||
# There are 3 different usages:
|
||||
# 1) Ordinary imported code.
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
#
|
||||
|
||||
|
||||
## Nimrod's standard IO library. It contains high-performance
|
||||
## routines for reading and writing data to (buffered) files or
|
||||
## TTYs.
|
||||
# Nimrod's standard IO library. It contains high-performance
|
||||
# routines for reading and writing data to (buffered) files or
|
||||
# TTYs.
|
||||
|
||||
{.push debugger:off .} # the user does not want to trace a part
|
||||
# of the standard library!
|
||||
|
||||
Reference in New Issue
Block a user