58 lines
1.2 KiB
Markdown
58 lines
1.2 KiB
Markdown
# esrap
|
|
|
|
Parse in reverse. AST goes in, code comes out.
|
|
|
|
## Usage
|
|
|
|
```js
|
|
import { print } from 'esrap';
|
|
|
|
const { code, map } = print({
|
|
type: 'Program',
|
|
body: [
|
|
{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'alert'
|
|
},
|
|
arguments: [
|
|
{
|
|
type: 'Literal',
|
|
value: 'hello world!'
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
});
|
|
|
|
console.log(code); // alert('hello world!');
|
|
```
|
|
|
|
If the nodes of the input AST have `loc` properties (e.g. the AST was generated with [`acorn`](https://github.com/acornjs/acorn/tree/master/acorn/#interface) with the `locations` option set), sourcemap mappings will be created.
|
|
|
|
## Options
|
|
|
|
You can pass information that will be added to the resulting sourcemap (note that the AST is assumed to come from a single file):
|
|
|
|
```js
|
|
const { code, map } = print(ast, {
|
|
sourceMapSource: 'input.js',
|
|
sourceMapContent: fs.readFileSync('input.js', 'utf-8')
|
|
});
|
|
```
|
|
|
|
## Why not just use Prettier?
|
|
|
|
Because it's ginormous.
|
|
|
|
## Developing
|
|
|
|
This repo uses [Bun](https://bun.sh/). Once it's installed, do `bun install` to install dependencies, and `bun test` to run the tests.
|
|
|
|
## License
|
|
|
|
[MIT](LICENSE)
|