# power-assert-context-formatter

> format power-assert context

Latest version **1.2.0** (published 2018-06-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install power-assert-context-formatter
pnpm add power-assert-context-formatter
yarn add power-assert-context-formatter
bun add power-assert-context-formatter
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2018-06-12 |
| First published | 2016-04-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 9.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 20 |
| Author | Takuto Wada |
| Maintainers | twada |
| Keywords | power-assert |

## Links

- npm: https://www.npmjs.com/package/power-assert-context-formatter
- Repository: https://github.com/twada/power-assert-runtime
- Issues: https://github.com/twada/power-assert-runtime/issues
- npm.io page: https://npm.io/package/power-assert-context-formatter

## Dependencies (2)

- [core-js](https://npm.io/package/core-js.md) ^2.0.0
- [power-assert-context-traversal](https://npm.io/package/power-assert-context-traversal.md) ^1.2.0

## Recent versions

- 1.2.0 (latest) — 2018-06-12
- 1.1.1 — 2016-11-10
- 1.1.0 — 2016-10-07
- 1.0.7 — 2016-07-01
- 1.0.5 — 2016-06-05
- 1.0.4 — 2016-06-04
- 1.0.3 — 2016-06-01
- 1.0.2 — 2016-06-01
- 1.0.1 — 2016-05-31
- 1.0.0 — 2016-05-31
- 0.1.0 — 2016-04-06

## README

[![power-assert][power-assert-banner]][power-assert-url]

[![Build Status][travis-image]][travis-url]
[![NPM version][npm-image]][npm-url]
[![License][license-image]][license-url]


Create function to format `powerAssertContext` object provided by power-assert at runtime.


USAGE
---------------------------------------

```javascript
var createFormatter = require('power-assert-context-formatter');
var FileRenderer = require('power-assert-renderer-file');
var AssertionRenderer = require('power-assert-renderer-assertion');
var DiagramRenderer = require('power-assert-renderer-diagram');
var ComparisonRenderer = require('power-assert-renderer-comparison');

var format = createFormatter({
    renderers: [
        FileRenderer,
        AssertionRenderer,
        DiagramRenderer,
        ComparisonRenderer
    ]
});

var assert = require('assert');

var foo = 'foo';
var bar = 'bar';
try {
    assert(foo === bar);
} catch (e) {
    var formattedText = format(e.powerAssertContext);
    . . .
}
```


API
---------------------------------------

### var createFormatter = require('power-assert-context-formatter');

| return type |
|:------------|
| `function`  |

Returns creator function of formatter.


### var format = createFormatter(options);

| return type |
|:------------|
| `function`  |

Create format function to format `powerAssertContext` object provided by power-assert.


#### options.renderers

| type                                         | default value |
|:---------------------------------------------|:--------------|
| `Array` of `function` or `Array` of `object` | null          |

Array of constructor function of various Renderers.
Each Renderer is instantiated for each assertion and registered to `ContextTraversal`.

##### customization

Each renderer accepts its options via form of object literal.

```javascript
var format = createFormatter({
    renderers: [
        { ctor: FileRenderer },
        { ctor: AssertionRenderer },
        { ctor: DiagramRenderer, options: { maxDepth: 2 } },
        { ctor: ComparisonRenderer, options: { lineDiffThreshold: 3 } }
    ]
});
```


#### options.reducers

| type                  | default value |
|:----------------------|:--------------|
| `Array` of `function` | empty array   |

Array of reducer function to be applied to `powerAssertContext`.


#### options.outputOffset

| type     | default value |
|:---------|:--------------|
| `number` | `2`           |

Number of spaces inserted at the left in power-assert output.


#### options.lineSeparator

| type     | default value |
|:---------|:--------------|
| `string` | `"\n"`        |

Line separator in power assert output.


#### options.legacy

| type      | default value |
|:----------|:--------------|
| `boolean` | `false`       |

When `true`, new renderers and legacy renderer implementations can be used together.


### var formattedText = format(powerAssertContext);

| return type |
|:------------|
| `string`  |

Format `powerAssertContext` into `formattedText`. `powerAssertContext` is an internal object structure, containing informations to render. Example of `powerAssertContext` is:

```javascript
{
    source: {
        content: 'assert(foo === bar)',
        filepath: 'test/some_test.js',
        line: 1,
        ast: '### JSON representation of AST nodes ###',
        tokens: '### JSON representation of AST tokens ###',
        visitorKeys: '### JSON representation of AST visitor keys ###'
    },
    args: [
        {
            value: false,
            events: [
                {
                    value: "FOO",
                    espath: "arguments/0/left"
                },
                {
                    value: "BAR",
                    espath: "arguments/0/right"
                },
                {
                    value: false,
                    espath: "arguments/0"
                }
            ]
        }
    ]
}
```


INSTALL
---------------------------------------

```sh
$ npm install --save-dev power-assert-context-formatter
```


AUTHOR
---------------------------------------
* [Takuto Wada](https://github.com/twada)


LICENSE
---------------------------------------
Licensed under the [MIT](https://github.com/twada/power-assert-runtime/blob/master/LICENSE) license.


[power-assert-url]: https://github.com/power-assert-js/power-assert
[power-assert-banner]: https://raw.githubusercontent.com/power-assert-js/power-assert-js-logo/master/banner/banner-official-fullcolor.png

[travis-url]: https://travis-ci.org/twada/power-assert-runtime
[travis-image]: https://secure.travis-ci.org/twada/power-assert-runtime.svg?branch=master

[npm-url]: https://npmjs.org/package/power-assert-context-formatter
[npm-image]: https://badge.fury.io/js/power-assert-context-formatter.svg

[license-url]: https://github.com/twada/power-assert-runtime/blob/master/LICENSE
[license-image]: https://img.shields.io/badge/license-MIT-brightgreen.svg

---
_Source: https://npm.io/package/power-assert-context-formatter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
