Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/t-ski/pretty-log

Pretty log messages with color, format, and cursor manipulation.
https://github.com/t-ski/pretty-log

color console cursor format

Last synced: about 10 hours ago
JSON representation

Pretty log messages with color, format, and cursor manipulation.

Awesome Lists containing this project

README

        

# Pretty Log

![NPM Version](https://img.shields.io/npm/v/%40t-ski%2Fpretty-log?logo=npm)
![GitHub License](https://img.shields.io/github/license/t-ski/pretty-log)

Pretty log messages with color, format, and cursor manipulation.

``` cli
npm install @t-ski/pretty-log
```

**Example Log**

Pretty log example

**Example Source**
``` js
prettyLog.BOLD.fg.WHITE.bg.color(128, 128, 255)(
` ${prettyLog.UNDERLINE("Example")} `
)
```

## Synopsis

Pretty Log has a simple API: Provide an arbitrary chain of style expressions that are finally applied to a target string.

``` ts
import prettyLog from "t-ski/pretty-log";

prettyLog.[]+(targetString: string): string;
```

> Pretty log styled strings are nestable, i.e. can be embedded within styled strings themselves.

## Style Expressions

### Color

``` ts
prettyLog..
// OR
prettyLog..color(r: number, g: number, b: number)
prettyLog..color(hex: string)
```

Color styles must be prepended by a color channel. `fg` indicates the foreground color channel, whereas `bg` is for the complementary background color channel.

| `` | RGB |
| :- | -: |
| `BLACK` | `0, 0, 0` |
| `GRAY` | `128, 128, 128` |
| `WHITE` | `255, 255, 255` |
| `RED` | `255, 0, 0` |
| `ORANGE` | `255, 128, 0` |
| `YELLOW` | `255, 255, 0` |
| `LIME` | `0, 255, 0` |
| `GREEN` | `0, 255, 128` |
| `CYAN` | `0, 255, 255` |
| `BLUE` | `0, 0, 255` |
| `PURPLE` | `128, 0, 255` |
| `PINK` | `255, 0, 255` |

#### Example

``` js
prettyLog.bg.RED.fg.color(245, 245, 245)("Example");
```

### Format

``` ts
prettyLog.
```

| `` | Description |
| :- | :- |
| `BOLD` | Bold, i.e. higher intensity |
| `FAINT` | Faint, i.e. lower intensity |
| `ITALIC` | Italic |
| `UNDERLINE` | Underlined |
| `DOUBLY_UNDERLINE` | Doubly underlined |
| `BLINK` | Blink effect |
| `INVERT` | Invert coloring (`fg` ⇄ `bg`) |
| `STRIKE` | Strike through, i.e. crossed out |

> Whether and how styles are displayed depends on the console application.

#### Example

``` js
prettyLog.BOLD.UNDERLINE("Example");
```

### Cursor

``` ts
prettyLog.
// OR
prettyLog.cursor(x: number, y: number)
```

| `` | Description |
| :- | :- |
| `UP` | Up one line (row) (same as `.cursor(0, 1)`) |
| `DOWN` | Down one line (same as `.cursor(0, -1)`) |
| `LEFT` | Left one space (column) (same as `.cursor(-1, 0)`) |
| `RIGHT` | Right one space (same as `.cursor(1, 0)`) |
| `CLEAR` | Clear current line |
| `ERASE` | Clear the last completed line (`\n`) |
| `STORE` | Store the current cursor position |
| `RESTORE` | Restore the current cursor position |

#### Example

``` js
prettyLog.CLEAR(".".repeat((++iteration % 3) + 1));
```

## Macros

Assigning frequently used style chains to reusable macro variables might be helpful:

``` js
const CODE = prettyLog.BOLD.fg.ORANGE;
console.log(CODE(".method()"));

function badge(message) {
console.log(
prettyLog.BOLD.fg.WHITE.bg.color(128, 128, 255)(
` ${prettyLog.UNDERLINE(message.toUpperCase())} `
)
);
}
badge("Results");
```

##

© Thassilo Martin Schiepanski