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

TTokenClass = 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
TGeneralTokenizer = object of RootObj
  kind*: TTokenClass
  start*, length*: int
  buf: cstring
  pos: int
  state: TTokenClass
  Source
TSourceLanguage = enum 
  langNone, langNim, langNimrod, langCpp, langCsharp, langC, langJava
  Source

Consts

sourceLanguageToStr: array[TSourceLanguage, string] = ["none", "Nim", "Nimrod", 
    "C++", "C#", "C", "Java"]
  Source
tokenClassToStr: array[TTokenClass, 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): TSourceLanguage {.raises: [], tags: [].}
  Source
proc initGeneralTokenizer(g: var TGeneralTokenizer; buf: cstring) {.raises: [], 
    tags: [].}
  Source
proc initGeneralTokenizer(g: var TGeneralTokenizer; buf: string) {.raises: [], 
    tags: [].}
  Source
proc deinitGeneralTokenizer(g: var TGeneralTokenizer) {.raises: [], tags: [].}
  Source
proc getNextToken(g: var TGeneralTokenizer; lang: TSourceLanguage) {.raises: [], 
    tags: [].}
  Source