JSTransformer
Normalize the API of any jstransformer
## Installation
npm install jstransformer
## Usage
```js
var transformer = require('jstransformer');
var marked = transformer(require('jstransformer-marked'));
var options = {};
var res = marked.render('Some **markdown**', options);
// => {body: 'Some markdown', dependencies: []}
```
This gives the same API regardless of the jstransformer passed in.
## API
A transformer, once normalised using this module, will implement the following methods. Note that if the underlying transformer cannot be used to implement the functionality, it may ultimately just throw an error.
### Returned object from `.render*`
```js
{body: String, dependencies: Array.}
```
- `body` represents the result as a string
- `dependencies` is an array of files that were read in as part of the render process (or an empty array if there were no dependencies)
### `.render`
```js
transformer.render(str, options, locals);
=> {body: String, dependencies: Array.}
```
_requires the underlying transform to implement `.render` or `.compile`_
Transform a string and return an object.
### `.renderAsync`
```js
transformer.renderAsync(str[, options], locals, callback);
```
```js
transformer.renderAsync(str[, options], locals);
=> Promise({body: String, dependencies: Array.})
```
_requires the underlying transform to implement `.renderAsync` or `.render`_
Transform a string asynchronously. If a callback is provided, it is called as `callback(err, data)`, otherwise a Promise is returned.
### `.renderFile`
```js
transformer.renderFile(filename, options, locals)
=> {body: String, dependencies: Array.}
```
_requires the underlying transform to implement `.renderFile`, `.render`, `.compileFile`, or `.compile`_
Transform a file and return an object.
### `.renderFileAsync`
```js
transformer.renderFileAsync(filename[, options], locals, callback);
```
```js
transformer.renderFileAsync(filename[, options], locals);
=> Promise({body: String, dependencies: Array.})
```
_requires the underlying transform to implement `.renderFileAsync`, `.renderFile`, `.renderAsync`, `.render`, `.compileFileAsync`, `.compileFile`, `.compileAsync`, or `.compileFile`_
Transform a file asynchronously. If a callback is provided, it is called as `callback(err, data)`, otherwise a Promise is returned.
### `.inputFormats`
```js
var formats = transformer.inputFormats;
=> ['md', 'markdown']
```
Returns an array of strings representing potential input formats for the transform. If not provided directly by the transform, results in an array containing the name of the transform.
## License
MIT