sensiolabs / ansi-to-html
A library to convert a text with ANSI codes to HTML
Installs: 6 370 794
Dependents: 56
Suggesters: 0
Security: 0
Stars: 238
Watchers: 15
Forks: 31
Open Issues: 13
README
This small library only does one thing: converting a text containing ANSI codes to an HTML5 fragment:
require_once __DIR__.'/vendor/autoload.php'; use SensioLabs\AnsiConverter\AnsiToHtmlConverter; $converter = new AnsiToHtmlConverter(); $html = $converter->convert($ansi);
The $ansi
variable should contain a text with ANSI codes, and $html
will
contain the converted HTML5 version of it.
You can then output the HTML5 fragment in any HTML document:
<html> <body> <pre style="background-color: black; overflow: auto; padding: 10px 15px; font-family: monospace;" ><?php echo $html ?></pre> </body> </html>
The converter supports different color themes:
use SensioLabs\AnsiConverter\Theme\SolarizedTheme; $theme = new SolarizedTheme(); $converter = new AnsiToHtmlConverter($theme);
By default, the colors are inlined into the HTML, but you can also use classes by turning off style inlining:
$converter = new AnsiToHtmlConverter($theme, false);
And the asCss()
method of the theme object lets you retrieve the theme styles
as a CSS snippet:
$styles = $theme->asCss();
which you can then use in your HTML document:
<html> <head> <style> <?php echo $styles ?> .ansi_box { overflow: auto; padding: 10px 15px; font-family: monospace; } </style> </head> <body> <pre class="ansi_color_bg_black ansi_color_fg_white ansi_box"><?php echo $html ?></pre> </body> </html>
Twig Integration
Register the extension:
use SensioLabs\AnsiConverter\Bridge\Twig\AnsiExtension; $twig->addExtension(AnsiExtension());
It's possible to use a custom AnsiToHtmlConverter
:
use SensioLabs\AnsiConverter\Bridge\Twig\AnsiExtension; use SensioLabs\AnsiConverter\Theme\SolarizedTheme; $theme = new SolarizedTheme(); $converter = new AnsiToHtmlConverter($theme, false); $twig->addExtension(new AnsiExtension($converter));
Then:
<html> <head> <style> {# This is only need if the inline styling is disabled #} {{ ansi_css }} </style> </head> <body> {{ some_ansi_code|ansi_to_html }} </body> </html>