Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ansidec

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ansidec

Limited Unix ANSI escape sequences transformer for use in Browsers

  • 0.3.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
634
increased by16.12%
Maintainers
1
Weekly downloads
 
Created
Source
   ▄████████ ███▄▄▄▄      ▄████████  ▄█  ████████▄     ▄████████  ▄████████
  ███    ███ ███▀▀▀██▄   ███    ███ ███  ███   ▀███   ███    ███ ███    ███
  ███    ███ ███   ███   ███    █▀  ███▌ ███    ███   ███    █▀  ███    █▀
  ███    ███ ███   ███   ███        ███▌ ███    ███  ▄███▄▄▄     ███
▀███████████ ███   ███ ▀███████████ ███▌ ███    ███ ▀▀███▀▀▀     ███
  ███    ███ ███   ███          ███ ███  ███    ███   ███    █▄  ███    █▄
  ███    ███ ███   ███    ▄█    ███ ███  ███   ▄███   ███    ███ ███    ███
  ███    █▀   ▀█   █▀   ▄████████▀  █▀   ████████▀    ██████████ ████████▀

npm travis Coverage Status MIT badge

ANSIDec is a library for handling limited number of ANSI escape sequences for use in Browsers. The primary goal of the library is to allow of displaying ANSI and ASCII art in Browsers by transforming Unix encoding to html. But it can also be used from Node.js.

Demo

https://jcubic.github.io/ansidec/

Installation

Npm installation for use with webpack:

npm install ansidec

Besides npm you can also download that file locally or use unpkg.com:

<script src="https://unpkg.com/ansidec"></script>

Usage

// if you're using webpack or node.js you can use npm
var ansi = require('ansidec');

var format = ansi.format(function(styles, color, background, text) {
  var style = [];
  if (color) {
    style.push('color:' + color);
  }
  if (background) {
    style.push('background:' + background);
  }
  if (styles.bold) {
    style.push('font-weight:bold');
  }
  if (styles.italic) {
    style.push('font-style:italic');
  }
  if (styles.underline) {
    styles.push('text-decoration:underline');
  }
  return '<span style="' + style.join(';') + '">' + text + '</span>';
});

document.querySelector('pre').innerHTML = format(text);

format function can be executed with text as second argument, then it will return string. If it don't get string as second argument it will return function. So it's like it was curried.

If you want just to output html you can use helper:

var ansi = require('ansidec');
var output = document.querySelector('pre');
output.innerHTML = ansi.html(text)

and use format only if you need different html or any different output text.

ANSI art

If you want to render ANSI art with this library you will need to covert the text from ANSI art file to UTF-8 to do that you can use iconv-lite library or iconv on a Back-End see how to do that in examples directory.

Some ANSI art are 80 characters wide but some have meta data called SAUSE. You can read those data using ansi.meta function:

var sause = ansi.meta(text);
if (sause) {
  var chars = sause.tinfo[0];
  // note that ch unit don't work properly in IE
  output.style.width = chars + 'ch';
}

meta object have those properties (description in SAUSE specification linked above).

{
  id: 'SAUSE',
  version: string,
  title: string,
  author: string,
  group: string,
  date: string,
  fileSize: number,
  tinfo: number[],
  comments: string,
  tflags: string,
  zstring: string
}

Changelog

  • 0.3.0 - parsing sause meta
  • 0.2.1 - bump up version for npm
  • 0.2.0 - fix 8 bit colors (Denis Ritchie)
  • 0.1.0 - first version

License

Released under MIT license

Copyright (c) 2018-2019 Jakub T. Jankiewicz

Keywords

FAQs

Package last updated on 12 Nov 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc