Module highlite

Source highlighter for programming or markup languages. Currently only few languages are supported, other languages may be added. The interface supports one language nested in another.

Types

TokenClass = enum
  gtEof, gtNone, gtWhitespace, gtDecNumber, gtBinNumber, gtHexNumber, gtOctNumber,
  gtFloatNumber, gtIdentifier, gtKeyword, gtStringLit, gtLongStringLit, gtCharLit,
  gtEscapeSequence, gtOperator, gtPunctuation, gtComment, gtLongComment,
  gtRegularExpression, gtTagStart, gtTagEnd, gtKey, gtValue, gtRawData, gtAssembler,
  gtPreprocessor, gtDirective, gtCommand, gtRule, gtHyperlink, gtLabel, gtReference,
  gtOther
  Source
GeneralTokenizer = object of RootObj
  kind*: TokenClass
  start*, length*: int
  buf: cstring
  pos: int
  state: TokenClass
  Source
SourceLanguage = enum
  langNone, langNim, langNimrod, langCpp, langCsharp, langC, langJava
  Source

Consts

sourceLanguageToStr: array[SourceLanguage, string] = ["none", "Nim", "Nimrod", "C++",
    "C#", "C", "Java"]
  Source
tokenClassToStr: array[TokenClass, string] = ["Eof", "None", "Whitespace", "DecNumber",
    "BinNumber", "HexNumber", "OctNumber", "FloatNumber", "Identifier", "Keyword",
    "StringLit", "LongStringLit", "CharLit", "EscapeSequence", "Operator",
    "Punctuation", "Comment", "LongComment", "RegularExpression", "TagStart",
    "TagEnd", "Key", "Value", "RawData", "Assembler", "Preprocessor", "Directive",
    "Command", "Rule", "Hyperlink", "Label", "Reference", "Other"]
  Source

Procs

proc getSourceLanguage(name: string): SourceLanguage {.raises: [], tags: [].}
  Source
proc initGeneralTokenizer(g: var GeneralTokenizer; buf: cstring) {.raises: [], tags: [].}
  Source
proc initGeneralTokenizer(g: var GeneralTokenizer; buf: string) {.raises: [], tags: [].}
  Source
proc deinitGeneralTokenizer(g: var GeneralTokenizer) {.raises: [], tags: [].}
  Source
proc getNextToken(g: var GeneralTokenizer; lang: SourceLanguage) {.raises: [], tags: [].}
  Source