william

Types

pub type Base {
  Binary
  Octal
  Decimal
  Hexadecimal
}

Constructors

  • Binary
  • Octal
  • Decimal
  • Hexadecimal

HighlightTokens stringify, classify and flatten TOML tokens into groups.

pub type HighlightToken {
  HighlightError(str: String)
  HighlightKey(str: String)
  HighlightTable(str: String)
  HighlightString(str: String)
  HighlightNumber(str: String)
  HighlightDateTime(str: String)
  HighlightLiteral(str: String)
  HighlightOperator(str: String)
  HighlightPunctuation(str: String)
  HighlightComment(str: String)
  HighlightWhitespace(str: String)
}

Constructors

  • HighlightError(str: String)
  • HighlightKey(str: String)
  • HighlightTable(str: String)
  • HighlightString(str: String)
  • HighlightNumber(str: String)
  • HighlightDateTime(str: String)
  • HighlightLiteral(str: String)
  • HighlightOperator(str: String)
  • HighlightPunctuation(str: String)
  • HighlightComment(str: String)
  • HighlightWhitespace(str: String)
pub opaque type Lexer
pub type StringDelimiter {
  BasicString
  LiteralString
  MultilineBasicString
  MultilineLiteralString
}

Constructors

  • BasicString
  • LiteralString
  • MultilineBasicString
  • MultilineLiteralString

A token useful for parsing or processing TOML source code.

pub type Token {
  EndOfLine(str: String)
  Whitespace(str: String)
  Comment(str: String)
  BareKey(name: String)
  String(delimiter: StringDelimiter, value: String)
  Boolean(value: String)
  Integer(base: Base, value: String)
  Float(value: String)
  DateTime(value: String)
  Equal
  Dot
  Comma
  OpenTable
  CloseTable
  OpenArrayTable
  CloseArrayTable
  OpenBracket
  CloseBracket
  OpenBrace
  CloseBrace
  Unexpected(str: String)
  InvalidNumber(str: String)
  UnterminatedString(delimiter: StringDelimiter, value: String)
}

Constructors

  • EndOfLine(str: String)
  • Whitespace(str: String)
  • Comment(str: String)
  • BareKey(name: String)
  • String(delimiter: StringDelimiter, value: String)
  • Boolean(value: String)
  • Integer(base: Base, value: String)
  • Float(value: String)
  • DateTime(value: String)
  • Equal
  • Dot
  • Comma
  • OpenTable
  • CloseTable
  • OpenArrayTable
  • CloseArrayTable
  • OpenBracket
  • CloseBracket
  • OpenBrace
  • CloseBrace
  • Unexpected(str: String)
  • InvalidNumber(str: String)
  • UnterminatedString(delimiter: StringDelimiter, value: String)

Values

pub fn highlight(source: String) -> List(HighlightToken)

Parse TOML source code into a list of HighlightToken using default settings.

The resulting token list can be highlighted by using functions like to_ansi, to_html, or by pattern matching on it yourself.

pub fn ignore_comments(lexer: Lexer) -> Lexer

Skip comment tokens in the resulting token list.

pub fn ignore_whitespace(lexer: Lexer) -> Lexer

Skip whitespace and end-of-line tokens in the resulting token list.

pub fn new() -> Lexer

Create a new Lexer with default settings.

Lexers can be cached and reused to parse many source files efficiently.

pub fn to_ansi(tokens: List(HighlightToken)) -> String

Format a list of HighlightToken into ANSI highlighting for display in a terminal.

pub fn to_highlight(tokens: List(Token)) -> List(HighlightToken)

Convert a list of lexer tokens into a list of HighlightToken.

pub fn to_html(tokens: List(HighlightToken)) -> String

Format a list of HighlightToken as HTML.

Each non-whitespace token is wrapped inside a <span> tag with a class indicating the type.

Class names are based on contour:

TokenCSS class
Commenthl-comment
Date/timehl-function
Errorhl-error
Keyhl-attribute
Literalhl-literal
Numberhl-number
Operatorhl-operator
Punctuationhl-punctuation
Stringhl-string
Table namehl-module
Whitespaceno class

Place the output within <pre><code class="language-toml">...</code></pre> and add styling for these CSS classes to get highlighting on your website. Here’s some CSS you could use:

pre code {
  .hl-comment     { color: #d4d4d4; font-style: italic }
  .hl-function    { color: #9ce7ff }
  .hl-attribute   { color: #ffd596 }
  .hl-operator    { color: #ffaff3 }
  .hl-string      { color: #c8ffa7 }
  .hl-number      { color: #c8ffa7 }
  .hl-literal     { color: #c8ffa7 }
  .hl-module      { color: #ffddfa }
  .hl-punctuation { color: inherit }
  .hl-error       { background: red; color: white }
}
pub fn to_source(tokens: List(Token)) -> String

Convert a list of tokens back into their source representation.

pub fn tokenise(lexer: Lexer, input: String) -> List(Token)

Parse TOML source code into a list of lexer tokens.

Search Document