178 lines
5.6 KiB
TypeScript
Executable File
178 lines
5.6 KiB
TypeScript
Executable File
// Type definitions for Anser
|
|
// Project: https://github.com/IonicaBizau/anser
|
|
|
|
export interface AnserJsonEntry {
|
|
/** The text. */
|
|
content: string;
|
|
/** The foreground color. */
|
|
fg: string;
|
|
/** The background color. */
|
|
bg: string;
|
|
/** The foreground true color (if 16m color is enabled). */
|
|
fg_truecolor: string;
|
|
/** The background true color (if 16m color is enabled). */
|
|
bg_truecolor: string;
|
|
/** `true` if a carriageReturn \r was fount at end of line. */
|
|
clearLine: boolean;
|
|
decoration: null | 'bold' | 'dim' | 'italic' | 'underline' | 'blink' | 'reverse' | 'hidden' | 'strikethrough';
|
|
/** `true` if the colors were processed, `false` otherwise. */
|
|
was_processed: boolean;
|
|
/** A function returning `true` if the content is empty, or `false` otherwise. */
|
|
isEmpty(): boolean;
|
|
}
|
|
|
|
export interface AnserOptions {
|
|
/** If `true`, the result will be an object. */
|
|
json?: boolean;
|
|
/** If `true`, HTML classes will be appended to the HTML output. */
|
|
use_classes?: boolean;
|
|
remove_empty?: boolean;
|
|
}
|
|
|
|
type OptionsWithJson = AnserOptions & { json: true };
|
|
|
|
export default class Anser {
|
|
/**
|
|
* Escape the input HTML.
|
|
*
|
|
* This does the minimum escaping of text to make it compliant with HTML.
|
|
* In particular, the '&','<', and '>' characters are escaped. This should
|
|
* be run prior to `ansiToHtml`.
|
|
*
|
|
* @param txt The input text (containing the ANSI snippets).
|
|
* @returns The escaped html.
|
|
*/
|
|
static escapeForHtml (txt: string): string;
|
|
|
|
/**
|
|
* Adds the links in the HTML.
|
|
*
|
|
* This replaces any links in the text with anchor tags that display the
|
|
* link. The links should have at least one whitespace character
|
|
* surrounding it. Also, you should apply this after you have run
|
|
* `ansiToHtml` on the text.
|
|
*
|
|
* @param txt The input text.
|
|
* @returns The HTML containing the <a> tags (unescaped).
|
|
*/
|
|
static linkify (txt: string): string;
|
|
|
|
/**
|
|
* This replaces ANSI terminal escape codes with SPAN tags that wrap the
|
|
* content.
|
|
*
|
|
* This function only interprets ANSI SGR (Select Graphic Rendition) codes
|
|
* that can be represented in HTML.
|
|
* For example, cursor movement codes are ignored and hidden from output.
|
|
* The default style uses colors that are very close to the prescribed
|
|
* standard. The standard assumes that the text will have a black
|
|
* background. These colors are set as inline styles on the SPAN tags.
|
|
*
|
|
* Another option is to set `use_classes: true` in the options argument.
|
|
* This will instead set classes on the spans so the colors can be set via
|
|
* CSS. The class names used are of the format `ansi-*-fg/bg` and
|
|
* `ansi-bright-*-fg/bg` where `*` is the color name,
|
|
* i.e black/red/green/yellow/blue/magenta/cyan/white.
|
|
*
|
|
* @param txt The input text.
|
|
* @param options The options.
|
|
* @returns The HTML output.
|
|
*/
|
|
static ansiToHtml (txt: string, options?: AnserOptions): string;
|
|
|
|
/**
|
|
* Converts ANSI input into JSON output.
|
|
*
|
|
* @param txt The input text.
|
|
* @param options The options.
|
|
* @returns The HTML output.
|
|
*/
|
|
static ansiToJson (txt: string, options?: AnserOptions): AnserJsonEntry[];
|
|
|
|
/**
|
|
* Converts ANSI input into text output.
|
|
*
|
|
* @param txt The input text.
|
|
* @returns The text output.
|
|
*/
|
|
static ansiToText (txt: string, options?: AnserOptions): string;
|
|
|
|
/**
|
|
* Sets up the palette.
|
|
*/
|
|
setupPalette (): void;
|
|
|
|
/**
|
|
* Escapes the input text.
|
|
*
|
|
* @param txt The input text.
|
|
* @returns The escpaed HTML output.
|
|
*/
|
|
escapeForHtml (txt: string): string;
|
|
|
|
/**
|
|
* Adds HTML link elements.
|
|
*
|
|
* @param txt The input text.
|
|
* @returns The HTML output containing link elements.
|
|
*/
|
|
linkify (txt: string): string;
|
|
|
|
/**
|
|
* Converts ANSI input into HTML output.
|
|
*
|
|
* @param txt The input text.
|
|
* @param options The options.
|
|
* @returns The HTML output.
|
|
*/
|
|
ansiToHtml (txt: string, options?: AnserOptions): string;
|
|
|
|
/**
|
|
* Converts ANSI input into HTML output.
|
|
*
|
|
* @param txt The input text.
|
|
* @param options The options.
|
|
* @returns The JSON output.
|
|
*/
|
|
ansiToJson (txt: string, options?: AnserOptions): AnserJsonEntry[];
|
|
|
|
/**
|
|
* Converts ANSI input into HTML output.
|
|
*
|
|
* @param txt The input text.
|
|
* @returns The text output.
|
|
*/
|
|
ansiToText (txt: string, options?: AnserOptions): string;
|
|
|
|
/**
|
|
* Processes the input.
|
|
*
|
|
* @param txt The input text.
|
|
* @param options The options.
|
|
* @param markup If false, the colors will not be parsed.
|
|
*/
|
|
process (txt: string, options: OptionsWithJson, markup?: boolean): AnserJsonEntry[];
|
|
process (txt: string, options?: AnserOptions, markup?: boolean): string;
|
|
|
|
/**
|
|
* Processes the current chunk into json output.
|
|
*
|
|
* @param text The input text.
|
|
* @param options The options.
|
|
* @param markup If false, the colors will not be parsed.
|
|
* @return The JSON output.
|
|
*/
|
|
processChunkJson (text: string, options?: AnserOptions, markup?: boolean): AnserJsonEntry;
|
|
|
|
/**
|
|
* Processes the current chunk of text.
|
|
*
|
|
* @param text The input text.
|
|
* @param options The options.
|
|
* @param markup If false, the colors will not be parsed.
|
|
* @return The result (object if `json` is wanted back or string otherwise).
|
|
*/
|
|
processChunk (text: string, options: OptionsWithJson, markup?: boolean): AnserJsonEntry;
|
|
processChunk (text: string, options?: AnserOptions, markup?: boolean): string;
|
|
}
|