This module implements a reStructuredText parser. A large subset is implemented. Some features of the markdown wiki syntax are also supported.
Types
TRstParseOption = enum roSkipPounds, ## skip ``#`` at line beginning (documentation ## embedded in Nim comments) roSupportSmilies, ## make the RST parser support smilies like ``:)`` roSupportRawDirective, ## support the ``raw`` directive (don't support ## it for sandboxing) roSupportMarkdown ## support additional features of markdown
- options for the RST parser Source
TRstParseOptions = set[TRstParseOption]
- Source
TMsgClass = enum mcHint = "Hint", mcWarning = "Warning", mcError = "Error"
- Source
TMsgKind = enum meCannotOpenFile, meExpected, meGridTableNotImplemented, meNewSectionExpected, meGeneralParseError, meInvalidDirective, mwRedefinitionOfLabel, mwUnknownSubstitution, mwUnsupportedLanguage, mwUnsupportedField
- the possible messages Source
TMsgHandler = proc (filename: string; line, col: int; msgKind: TMsgKind; arg: string) {.nimcall.}
- what to do in case of an error Source
TFindFileHandler = proc (filename: string): string {.nimcall.}
- Source
EParseError = object of ValueError
- Source
Procs
proc whichMsgClass(k: TMsgKind): TMsgClass {.raises: [], tags: [].}
- returns which message class k belongs to. Source
proc defaultMsgHandler(filename: string; line, col: int; msgkind: TMsgKind; arg: string) {.procvar, raises: [ValueError, EParseError, IOError], tags: [WriteIOEffect].}
- Source
proc defaultFindFile(filename: string): string {.procvar, raises: [], tags: [ReadDirEffect].}
- Source
proc addNodes(n: PRstNode): string {.raises: [], tags: [].}
- Source
proc rstnodeToRefname(n: PRstNode): string {.raises: [], tags: [].}
- Source
proc getFieldValue(n: PRstNode): string {.raises: [], tags: [].}
-
Returns the value of a specific rnField node.
This proc will assert if the node is not of the expected type. The empty string will be returned as a minimum. Any value in the rst will be stripped form leading/trailing whitespace.
Source proc getFieldValue(n: PRstNode; fieldname: string): string {.raises: [], tags: [].}
- Source
proc getArgument(n: PRstNode): string {.raises: [], tags: [].}
- Source
proc rstParse(text, filename: string; line, column: int; hasToc: var bool; options: TRstParseOptions; findFile: TFindFileHandler = nil; msgHandler: TMsgHandler = nil): PRstNode {.raises: [Exception], tags: [ReadEnvEffect, RootEffect].}
- Source