Module rstast

This module implements an AST for the reStructuredText parser.

Types

RstNodeKind = enum
  rnInner, rnHeadline, rnOverline, rnTransition, rnParagraph, rnBulletList,
  rnBulletItem, rnEnumList, rnEnumItem, rnDefList, rnDefItem, rnDefName, rnDefBody,
  rnFieldList, rnField, rnFieldName, rnFieldBody, rnOptionList, rnOptionListItem,
  rnOptionGroup, rnOption, rnOptionString, rnOptionArgument, rnDescription,
  rnLiteralBlock, rnQuotedLiteralBlock, rnLineBlock, rnLineBlockItem, rnBlockQuote,
  rnTable, rnGridTable, rnTableRow, rnTableHeaderCell, rnTableDataCell, rnLabel,
  rnFootnote, rnCitation, rnStandaloneHyperlink, rnHyperlink, rnRef, rnDirective,
  rnDirArg, rnRaw, rnTitle, rnContents, rnImage, rnFigure, rnCodeBlock, rnRawHtml,
  rnRawLatex, rnContainer, rnIndex, rnSubstitutionDef, rnGeneralRole, rnSub, rnSup,
  rnIdx, rnEmphasis, rnStrongEmphasis, rnTripleEmphasis, rnInterpretedText,
  rnInlineLiteral, rnSubstitutionReferences, rnSmiley, rnLeaf
the possible node kinds of an PRstNode   Source Edit
PRstNode = ref RstNode
an RST node   Source Edit
RstNodeSeq = seq[PRstNode]
  Source Edit
RstNode = object
  kind*: RstNodeKind           ## the node's kind
  text*: string                ## valid for leafs in the AST; and the title of
              ## the document or the section
  level*: int                  ## valid for some node kinds
  sons*: RstNodeSeq            ## the node's sons
  
an RST node's description   Source Edit

Procs

proc len(n: PRstNode): int {.
raises: [], tags: []
.}
  Source Edit
proc newRstNode(kind: RstNodeKind): PRstNode {.
raises: [], tags: []
.}
  Source Edit
proc newRstNode(kind: RstNodeKind; s: string): PRstNode {.
raises: [], tags: []
.}
  Source Edit
proc lastSon(n: PRstNode): PRstNode {.
raises: [], tags: []
.}
  Source Edit
proc add(father, son: PRstNode) {.
raises: [], tags: []
.}
  Source Edit
proc addIfNotNil(father, son: PRstNode) {.
raises: [], tags: []
.}
  Source Edit
proc renderRstToRst(n: PRstNode; result: var string) {.
raises: [Exception], tags: [RootEffect]
.}
renders n into its string representation and appends to result.   Source Edit
proc renderRstToJson(node: PRstNode): string {.
raises: [], tags: []
.}
Writes the given RST node as JSON that is in the form
{
  "kind":string node.kind,
  "text":optional string node.text,
  "level":optional int node.level,
  "sons":optional node array
}
  Source Edit