[][src]Crate ansi_to_html

Convert a string that can contain ANSI escape codes to HTML.

This crate currently supports SGR parameters (text style and colors). The supported styles are:

  • bold
  • italic
  • underlined
  • crossed out
  • faint
  • foreground and background colors: 3-bit, 4-bit, 8-bit, truecolor (24-bit)

Not supported SGR parameters (note that most of these are niche features and rarely supported by terminals):

  • slow/rapid blink
  • reverse video
  • conceal
  • alternative fonts
  • fraktur
  • doubly underlined
  • proportional spacing
  • framed
  • encircled
  • overlined
  • underline color (not in standard)
  • ideogram attributes
  • superscript, subscript (not in standard)
  • bright foreground/background color (not in standard)

All unsupported ANSI escape codes are stripped from the output.

It should be easy to add support for more styles, if there's a straightforward HTML representation. If you need a different style (e.g. doubly underlined), file an issue.

Example

// \x1b[1m : bold   \x1b[31m : red
let input = "<h1> \x1b[1m Hello \x1b[31m world! </h1>";
let converted = ansi_to_html::convert_escaped(input).unwrap();
assert_eq!(
    converted.as_str(),
    "&lt;h1&gt; <b> Hello <span style='color:#a00'> world! &lt;/h1&gt;</span></b>"
);

Structs

Esc

A formatting wrapper for escaping HTML in a string.

Enums

Error

Errors that can occur when converting an ANSI string to HTML

Functions

convert

Converts a string containing ANSI escape codes to HTML.

convert_escaped

Converts a string containing ANSI escape codes to HTML. Special html characters (<>&'") are escaped prior to the conversion.