290 lines
6.8 KiB
Markdown
290 lines
6.8 KiB
Markdown
<!-- Please do not edit this file. Edit the `blah` field in the `package.json` instead. If in doubt, open an issue. -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# anser
|
|
|
|
[![Support me on Patreon][badge_patreon]][patreon] [![Buy me a book][badge_amazon]][amazon] [![PayPal][badge_paypal_donate]][paypal-donations] [](https://github.com/IonicaBizau/ama) [](https://travis-ci.org/IonicaBizau/anser/) [](https://www.npmjs.com/package/anser) [](https://www.npmjs.com/package/anser) [](https://www.codementor.io/@johnnyb?utm_source=github&utm_medium=button&utm_term=johnnyb&utm_campaign=github)
|
|
|
|
<a href="https://www.buymeacoffee.com/H96WwChMy" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee"></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> A low level parser for ANSI sequences.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :rocket: Features
|
|
|
|
|
|
- Converts text containing [ANSI color escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) into equivalent HTML elements.
|
|
- Allows converting the input into JSON output.
|
|
- HTML escaping
|
|
- Converts links into HTML elements
|
|
- Friendly APIs to use with virtual dom libraries
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :cloud: Installation
|
|
|
|
```sh
|
|
# Using npm
|
|
npm install --save anser
|
|
|
|
# Using yarn
|
|
yarn add anser
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :clipboard: Example
|
|
|
|
|
|
|
|
```js
|
|
const Anser = require("anser");
|
|
|
|
const txt = "\u001b[38;5;196mHello\u001b[39m \u001b[48;5;226mWorld\u001b[49m";
|
|
|
|
console.log(Anser.ansiToHtml(txt));
|
|
// <span style="color:rgb(255, 0, 0)">Hello</span> <span style="background-color:rgb(255, 255, 0)">World</span>
|
|
|
|
console.log(Anser.ansiToHtml(txt, { use_classes: true }));
|
|
// <span class="ansi-palette-196-fg">Hello</span> <span class="ansi-palette-226-bg">World</span>
|
|
|
|
console.log(Anser.ansiToJson(txt));
|
|
// [ { content: '',
|
|
// fg: null,
|
|
// bg: null,
|
|
// fg_truecolor: null,
|
|
// bg_truecolor: null,
|
|
// clearLine: undefined,
|
|
// decoration: null,
|
|
// was_processed: false,
|
|
// isEmpty: [Function: isEmpty] },
|
|
// { content: 'Hello',
|
|
// fg: '255, 0, 0',
|
|
// bg: null,
|
|
// fg_truecolor: null,
|
|
// bg_truecolor: null,
|
|
// clearLine: false,
|
|
// decoration: null,
|
|
// was_processed: true,
|
|
// isEmpty: [Function: isEmpty] },
|
|
// { content: ' ',
|
|
// fg: null,
|
|
// bg: null,
|
|
// fg_truecolor: null,
|
|
// bg_truecolor: null,
|
|
// clearLine: false,
|
|
// decoration: null,
|
|
// was_processed: false,
|
|
// isEmpty: [Function: isEmpty] },
|
|
// { content: 'World',
|
|
// fg: null,
|
|
// bg: '255, 255, 0',
|
|
// fg_truecolor: null,
|
|
// bg_truecolor: null,
|
|
// clearLine: false,
|
|
// decoration: null,
|
|
// was_processed: true,
|
|
// isEmpty: [Function: isEmpty] },
|
|
// { content: '',
|
|
// fg: null,
|
|
// bg: null,
|
|
// fg_truecolor: null,
|
|
// bg_truecolor: null,
|
|
// clearLine: false,
|
|
// decoration: null,
|
|
// was_processed: false,
|
|
// isEmpty: [Function: isEmpty] } ]
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When using **TypeScript** without --esModuleInterop enabled you can do the following:
|
|
```ts
|
|
import Anser = require('anser');
|
|
const txt = "\u001b[38;5;196mHello\u001b[39m \u001b[48;5;226mWorld\u001b[49m";
|
|
console.log(Anser.ansiToHtml(txt));
|
|
// <span style="color:rgb(255, 0, 0)">Hello</span> <span style="background-color:rgb(255, 255, 0)">World</span>
|
|
```
|
|
|
|
Or with --esModuleInterop enabled you can do the following:
|
|
```ts
|
|
import Anser from 'anser';
|
|
const txt = "\u001b[38;5;196mHello\u001b[39m \u001b[48;5;226mWorld\u001b[49m";
|
|
console.log(Anser.ansiToHtml(txt));
|
|
// <span style="color:rgb(255, 0, 0)">Hello</span> <span style="background-color:rgb(255, 255, 0)">World</span>
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :memo: Documentation
|
|
|
|
|
|
Add several widely used style codes
|
|
|
|
### `processChunk(text, options, markup)`
|
|
Processes the current chunk of text.
|
|
|
|
#### Params
|
|
|
|
- **String** `text`: The input text.
|
|
- **Object** `options`: An object containing the following fields:
|
|
- `json` (Boolean): If `true`, the result will be an object.
|
|
- `use_classes` (Boolean): If `true`, HTML classes will be appended to the HTML output.
|
|
- **Boolean** `markup`: If false, the colors will not be parsed.
|
|
|
|
#### Return
|
|
- **Object|String** The result (object if `json` is wanted back or string otherwise).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :question: Get Help
|
|
|
|
There are few ways to get help:
|
|
|
|
|
|
|
|
1. Please [post questions on Stack Overflow](https://stackoverflow.com/questions/ask). You can open issues with questions, as long you add a link to your Stack Overflow question.
|
|
2. For bug reports and feature requests, open issues. :bug:
|
|
3. For direct and quick help, you can [use Codementor](https://www.codementor.io/johnnyb). :rocket:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :yum: How to contribute
|
|
Have an idea? Found a bug? See [how to contribute][contributing].
|
|
|
|
|
|
## :sparkling_heart: Support my projects
|
|
I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously,
|
|
this takes time. You can integrate and use these projects in your applications *for free*! You can even change the source code and redistribute (even resell it).
|
|
|
|
However, if you get some profit from this or just want to encourage me to continue creating stuff, there are few ways you can do it:
|
|
|
|
|
|
- Starring and sharing the projects you like :rocket:
|
|
- [![Buy me a book][badge_amazon]][amazon]—I love books! I will remember you after years if you buy me one. :grin: :book:
|
|
- [![PayPal][badge_paypal]][paypal-donations]—You can make one-time donations via PayPal. I'll probably buy a ~~coffee~~ tea. :tea:
|
|
- [![Support me on Patreon][badge_patreon]][patreon]—Set up a recurring monthly donation and you will get interesting news about what I'm doing (things that I don't share with everyone).
|
|
- **Bitcoin**—You can send me bitcoins at this address (or scanning the code below): `1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6`
|
|
|
|

|
|
|
|
|
|
Thanks! :heart:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :cake: Thanks
|
|
This project is highly based on [`ansi_up`](https://github.com/drudru/ansi_up), by [@drudru](https://github.com/drudru/). Thanks! :cake:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## :scroll: License
|
|
|
|
[MIT][license] © [Ionică Bizău][website]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[license]: /LICENSE
|
|
[website]: https://ionicabizau.net
|
|
[contributing]: /CONTRIBUTING.md
|
|
[docs]: /DOCUMENTATION.md
|
|
[badge_patreon]: https://ionicabizau.github.io/badges/patreon.svg
|
|
[badge_amazon]: https://ionicabizau.github.io/badges/amazon.svg
|
|
[badge_paypal]: https://ionicabizau.github.io/badges/paypal.svg
|
|
[badge_paypal_donate]: https://ionicabizau.github.io/badges/paypal_donate.svg
|
|
[patreon]: https://www.patreon.com/ionicabizau
|
|
[amazon]: http://amzn.eu/hRo9sIZ
|
|
[paypal-donations]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RVXDDLKKLQRJW
|