# <span style="color: #FF9AA2;">C</span><span style="color: #FFD166;">i</span><span style="color: #06D6A0;">a</span><span style="color: #118AB2;">l</span><span style="color: #B8B8FF;">l</span><span style="color: #FF9AA2;">o</span><span style="color: #FFD166;">r</span><span style="color: #06D6A0;">i</span><span style="color: #118AB2;">z</span><span style="color: #B8B8FF;">e</span> Your Code into ASCII Art!

<span style="color: #FF9AA2;">C</span><span style="color: #FFD166;">i</span><span style="color: #06D6A0;">a</span><span style="color: #118AB2;">l</span><span style="color: #B8B8FF;">l</span><span style="color: #FF9AA2;">o</span><span style="color: #FFD166;">r</span><span style="color: #06D6A0;">i</span><span style="color: #118AB2;">z</span><span style="color: #B8B8FF;">e</span> is a JavaScript library that allows you to convert your bundled JS into ASCII art using a binary mask image.

![](https://github.com/z-zeechung/ciallorize/blob/main/imgs/screenshot.png?raw=true)
![](https://github.com/z-zeechung/ciallorize/blob/main/imgs/ciallo.jpg?raw=true)

## To use <span style="color: #FF9AA2;">C</span><span style="color: #FFD166;">i</span><span style="color: #06D6A0;">a</span><span style="color: #118AB2;">l</span><span style="color: #B8B8FF;">l</span><span style="color: #FF9AA2;">o</span><span style="color: #FFD166;">r</span><span style="color: #06D6A0;">i</span><span style="color: #118AB2;">z</span><span style="color: #B8B8FF;">e</span>:
``` bash
npm i ciallorize
```

After installation, prepare your bundled JS file and mask image.

## **Requirements for the bundled JS file:​**
- The file must consist of a single line with no `\n` line breaks.
- The file must contain at least 5,000 characters.
- <span style="color: #FF9AA2;">C</span><span style="color: #FFD166;">i</span><span style="color: #06D6A0;">a</span><span style="color: #118AB2;">l</span><span style="color: #B8B8FF;">l</span><span style="color: #FF9AA2;">o</span><span style="color: #FFD166;">r</span><span style="color: #06D6A0;">i</span><span style="color: #118AB2;">z</span><span style="color: #B8B8FF;">e</span> does not guarantee 100% conversion for all JS files. If conversion fails, an error will be thrown, and we apologize for any inconvenience.

## **Requirements for the mask image:​**
- Can be in any format supported by sharp.js.
- Does not strictly need to be binary. During processing, the image will first be grayscaled, then binarized using a threshold of 128.
- Black areas represent where you want text to be filled, while white areas represent where you want spaces to be filled.

## How to call <span style="color: #FF9AA2;">C</span><span style="color: #FFD166;">i</span><span style="color: #06D6A0;">a</span><span style="color: #118AB2;">l</span><span style="color: #B8B8FF;">l</span><span style="color: #FF9AA2;">o</span><span style="color: #FFD166;">r</span><span style="color: #06D6A0;">i</span><span style="color: #118AB2;">z</span><span style="color: #B8B8FF;">e</span>:
``` js
const ciallorize = require('ciallorize');
const fs = require('fs');

const code = fs.readFileSync('bundle.js', 'utf-8')
               .replaceAll('\n', '');   // No line breaks allowed

ciallorize(
    code,
    'mask.png',  // Path to the mask image
    {
        // Optional: Represents the width-to-height ratio of each character
        fontWidthToHeightRatio: 16/40,
        // Optional: Represents compensation for the length of the code string
        characterCompensation: 0.95,
    }
).then(result=>{
    fs.writeFileSync('result.js', result);
})
```

# LICENSE
```
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 
                    Version 2, December 2004 
 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> 
 Everyone is permitted to copy and distribute verbatim or modified 
 copies of this license document, and changing it is allowed as long 
 as the name is changed. 
            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
  0. You just DO WHAT THE FUCK YOU WANT TO.
```