packages/docutils/rst
Исходный кодРедактироватьЭтот модуль реализует парсер reStructuredText (RST) и Markdown. Руководство пользователя по поддерживаемому синтаксису разметки и использованию в командной строке можно найти в Руководстве по Nim-совместимым Markdown и reStructuredText.
- См. также Руководство по Nim DocGen для обработки файлов
.nim. - См. также модуль packages/docutils/rstgen, чтобы узнать, как генерировать строки HTML или Latex (для их встраивания в пользовательские документы).
Выбор между Markdown и RST, а также дополнительные опции, включаются путём передачи options: RstParseOptions в процедуру rstParse.
Импорты
- os, strutils, enumutils, algorithm, списки, sequtils, таблицы, strscans, dochelpers, rstidx, rstast, miscdollars, highlite
Типы
EParseError = object of ValueError
- Исходный код Редактировать
FindFileHandler = proc (filename: string): string {.closure, ...gcsafe.}- Исходный код Редактировать
FindRefFileHandler = proc (targetRelPath: string): tuple[targetPath: string, linkRelPath: string] {.closure, ...gcsafe.}- возвращает местоположение файла .html или .idx по его относительному пути;
linkRelPath— префикс, добавляемый перед якорем ссылки из такого файла Исходный код Редактировать MsgClass = enum mcHint = "Hint", mcWarning = "Warning", mcError = "Error"
- Исходный код Редактировать
MsgHandler = proc (filename: string; line, col: int; msgKind: MsgKind; arg: string) {.closure, ...gcsafe.}- действия в случае ошибки Исходный код Редактировать
MsgKind = enum meCannotOpenFile = "cannot open \'$1\'", meExpected = "\'$1\' expected", meMissingClosing = "$1", meGridTableNotImplemented = "grid table is not implemented", meMarkdownIllformedTable = "illformed delimiter row of a Markdown table", meIllformedTable = "Illformed table: $1", meNewSectionExpected = "new section expected $1", meGeneralParseError = "general parse error", meInvalidDirective = "invalid directive: \'$1\'", meInvalidField = "invalid field: $1", meFootnoteMismatch = "mismatch in number of footnotes and their refs: $1", mwRedefinitionOfLabel = "redefinition of label \'$1\'", mwUnknownSubstitution = "unknown substitution \'$1\'", mwAmbiguousLink = "ambiguous doc link $1", mwBrokenLink = "broken link \'$1\'", mwUnsupportedLanguage = "language \'$1\' not supported", mwUnsupportedField = "field \'$1\' not supported", mwRstStyle = "RST style: $1", mwUnusedImportdoc = "importdoc for \'$1\' is not used", meSandboxedDirective = "disabled directive: \'$1\'"
- возможные сообщения Исходный код Редактировать
RstFileTable = object filenameToIdx*: Table[string, FileIndex] idxToFilename*: seq[string]
- Исходный код Редактировать
RstParseOption = enum 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 roPreferMarkdown, ## parse as Markdown (keeping RST as "extension" ## to Markdown) -- implies `roSupportMarkdown` roNimFile, ## set for Nim files where default interpreted ## text role should be :nim: roSandboxDisabled ## this option enables certain options ## (e.g. raw, include, importdoc) ## which are disabled by default as they can ## enable users to read arbitrary data and ## perform XSS if the parser is used in a web ## app.- опции для парсера RST Исходный код Редактировать
RstParseOptions = set[RstParseOption]
- Исходный код Редактировать
Константы
ColRstInit = 0
- Начальный номер столбца для автономного текста RST (глобальный вывод Nim добавляет ColOffset=1) Исходный код Редактировать
ColRstOffset = 1
- 1: копия ColOffset для внутреннего использования Исходный код Редактировать
LineRstInit = 1
- Начальный номер строки для автономного текста RST Исходный код Редактировать
Процедуры
proc addNodes(n: PRstNode): string {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc defaultFindFile(filename: string): string {....raises: [], tags: [ReadDirEffect], forbids: [].}- Исходный код Редактировать
proc defaultFindRefFile(filename: string): (string, string) {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc defaultMsgHandler(filename: string; line, col: int; msgkind: MsgKind; arg: string) {....raises: [ValueError, EParseError, IOError], tags: [WriteIOEffect], forbids: [].}- Исходный код Редактировать
proc getArgument(n: PRstNode): string {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc getFieldValue(n: PRstNode): string {....raises: [], tags: [], forbids: [].}-
Возвращает значение узла
rnField.Процедура будет проверять соответствие типа узла. В качестве минимума возвращается пустая строка. Любое значение из rst будет очищено от начальных и конечных пробелов.
Исходный код Редактировать proc getFieldValue(n: PRstNode; fieldname: string): string {....gcsafe, raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc rstMessage(filenames: RstFileTable; f: MsgHandler; info: TLineInfo; msgKind: MsgKind; arg: string) {. ...raises: [ValueError, Exception], tags: [RootEffect], forbids: [].}- Выводит предупреждения, используя
info, т.е. предупреждения во втором проходе для сносок/подстановок/ссылок или отrstgen.nim. Исходный код Редактировать proc rstnodeToRefname(n: PRstNode): string {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc rstParse(text, filename: string; line, column: int; options: RstParseOptions; findFile: FindFileHandler = nil; findRefFile: FindRefFileHandler = nil; msgHandler: MsgHandler = nil): tuple[node: PRstNode, filenames: RstFileTable, hasToc: bool] {. ...raises: [Exception, ValueError, KeyError], tags: [RootEffect, ReadIOEffect, ReadEnvEffect], forbids: [].}- Парсит весь
text. Результат готов кrstgen.renderRstToOut, обратите внимание, что второй элемент кортежа должен быть передан в аргументinitRstGeneratorfilenames(он заполняется здесь, по крайней мере,filenameи, возможно, другими файлами из RST.. include::утверждение). Исходный код Редактировать proc safeProtocol(linkStr: var string): string {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc whichMsgClass(k: MsgKind): MsgClass {....raises: [], tags: [], forbids: [].}- Возвращает класс сообщения, к которому относится
k. Исходный код Редактировать
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/rst.html