///|
/// Version of the upstream Pygments release this port follows.
pub let version : String = "2.21.0"
///|
/// Python's `pygments.lex`: the token stream of `code` (preprocessed and
/// filtered by `lexer`).
///
/// ```mbt check
/// test {
/// let lexer = @lexers.get_lexer_by_name("python")
/// let tokens = @pygments.lex("x = 1\n", lexer)
/// inspect(tokens[0].0, content="Token.Name")
/// inspect(tokens.map(t => t.1).join(""), content="x = 1\n")
/// }
/// ```
pub fn lex(
code : String,
lexer : @lexer.Lexer,
) -> Array[(@token.TokenType, String)] raise {
lexer.get_tokens(code)
}
///|
pub using @lexers {
get_lexer_by_name,
get_lexer_for_filename,
get_lexer_for_mimetype,
guess_lexer,
guess_lexer_for_filename,
}
///|
/// Python's `pygments.format`: renders a token stream with `formatter`.
pub fn format(
tokens : Array[(@token.TokenType, String)],
formatter : @formatters.Formatter,
) -> String raise {
formatter.format(tokens)
}
///|
/// Python's `pygments.highlight`: lexes `code` with `lexer` and renders it
/// with `formatter`.
///
/// ```mbt check
/// test {
/// let html = @pygments.highlight(
/// "x = 1\n",
/// @pygments.get_lexer_by_name("python"),
/// @pygments.get_formatter_by_name("html"),
/// )
/// inspect(
/// html,
/// content=(
/// #|
/// #|
/// ),
/// )
/// }
/// ```
pub fn highlight(
code : String,
lexer : @lexer.Lexer,
formatter : @formatters.Formatter,
) -> String raise {
@formatters.highlight(code, lexer, formatter)
}
///|
pub using @formatters {get_formatter_by_name, get_formatter_for_filename}