sweet-data
Version:
plugin to pretty-print or minify XML, JSON, CSS and SQL files
234 lines (137 loc) • 6.35 kB
Markdown
# sweet-data - Nodejs plugin
** Fork of pretty-data **
nodejs plugin to **pretty-print** or **minify**
text in **XML**, **JSON**, **CSS** and **SQL** formats.
**NOTE:** This library is under active development and is subject to breaking changes. Thank you for your patience and your support.
**License:** Dual licensed under
the MIT and GPL licenses:
[http://www.opensource.org/licenses/mit-license.php](http://www.opensource.org/licenses/mit-license.php)
[http://www.gnu.org/licenses/gpl.html](http://www.gnu.org/licenses/gpl.html)
## Overview
* `sd.xml(data)` - pretty print XML;
* `sd.json(data)` - pretty print JSON;
* `sd.css(data)` - pretty print CSS;
* `sd.sql(data)` - pretty print SQL;
* `sd.xmlmin(data [, preserveComments]) ` - minify XML;
* `sd.jsonmin(data)` - minify JSON text;
* `sd.cssmin(data [, preserveComments] )` - minify CSS text;
* `sd.sqlmin(data)` - minify SQL text;
* `sd.setStep([indentationCount, indentationChar])` - update indentation character(s) and character count (per depth). `SPACE` or `TAB` will use respective characters. Any other character provided will be assumed as ' '. Default values are `SPACE` and 2
## USAGE
[Configuration](#configuration)
[JSON](#json)
[JSON Minification](#json-minification)
[XML](#xml)
[XML Minification](#xml-minification)
`var sd = require('sweet-data'); `
`var xml_pp = sd.xml(data); `
`var xml_min = sd.xmlmin(data [,true]);`
`var css_pp = sd.css(data); `
`var css_min = sd.cssmin(data [, true]);`
`var sql_pp = sd.sql(data);`
`var sql_min = sd.sqlmin(data);`
<br />
### CONFIGURATION
#### setStep([indentationCount, indentationChar])
Set indentation character(s) and character count (per depth). `SPACE` or `TAB` will use respective characters. Any other character provided will be assumed as ' '.
Default values are `SPACE` and 2
<br />
### JSON
#### json(json: string | object)
Returns a promise which is resolved asynchronously when the json input (string or object) is parsed and beautified. The promise resolves a string accessed via `.then()`. Errors can be caught/handled via `.catch()`.
##### ES6
```
import { SweetData as sd } from 'sweet-data';
const json = { "foo": "bar" };
sd.json(json)
.then(beautifiedJSON => console.log(beautifiedJSON))
.catch(error => console.log(error));
```
##### CommonJS
```
const sd = require('sweet-data');
const json = { "foo": "bar" };
sd.json(json)
.then(beautifiedJSON => console.log(beautifiedJSON))
.catch(error => console.log(error));
```
<br />
### JSON Minification
#### jsonmin(json: string | object)
Returns a promise which is resolved asynchronously when the json input (string or object) is parsed and minified. The promise resolves a string accessed via `.then()`. Errors can be caught/handled via `.catch()`.
##### ES6
```
import { SweetData as sd } from 'sweet-data';
const json = { "foo": "bar" };
sd.jsonmin(json)
.then(minifiedJSON => console.log(minifiedJSON))
.catch(error => console.log(error));
```
##### CommonJS
```
const sd = require('sweet-data');
const json = { "foo": "bar" };
sd.jsonmin(json)
.then(minifiedJSON => console.log(minifiedJSON))
.catch(error => console.log(error));
```
<br />
### XML
#### xml(xml: string)
Returns a promise which is resolved asynchronously when the xml string input is beautified. The promise resolves a string accessed via `.then()`. Errors can be caught/handled via `.catch()`.
##### ES6
```
import { SweetData as sd } from 'sweet-data';
const xml = ' <a> <b>bbb</b> <!-- comment --><c/><d><soapenv:Envelope xmlns:soapenv="http://xxx" xmlns:xsd="http://yyy" xmlns:xsi="http://zzz"></soapenv> </d><e> <![CDATA[ <z></z> ]]></e><f><g></g></f></a>';
sd.xml(xml)
.then(beautifiedXML => console.log(beautifiedXML))
.catch(error => console.log(error));
```
##### CommonJS
```
const sd = require('sweet-data');
const xml = ' <a> <b>bbb</b> <!-- comment --><c/><d><soapenv:Envelope xmlns:soapenv="http://xxx" xmlns:xsd="http://yyy" xmlns:xsi="http://zzz"></soapenv> </d><e> <![CDATA[ <z></z> ]]></e><f><g></g></f></a>';
sd.xml(xml)
.then(beautifiedXML => console.log(beautifiedXML))
.catch(error => console.log(error));
```
<br />
### XML Minification
#### xmlmin(xml: string)
Returns a promise which is resolved asynchronously when the xml string input is minified. The promise resolves a string accessed via `.then()`. Errors can be caught/handled via `.catch()`.
##### ES6
```
import { SweetData as sd } from 'sweet-data';
const xml = ' <a> <b>bbb</b> <!-- comment --><c/><d><soapenv:Envelope xmlns:soapenv="http://xxx" xmlns:xsd="http://yyy" xmlns:xsi="http://zzz"></soapenv> </d><e> <![CDATA[ <z></z> ]]></e><f><g></g></f></a>';
sd.xmlmin(xml)
.then(minifiedXML => console.log(minifiedXML))
.catch(error => console.log(error));
```
##### CommonJS
```
const sd = require('sweet-data');
const xml = ' <a> <b>bbb</b> <!-- comment --><c/><d><soapenv:Envelope xmlns:soapenv="http://xxx" xmlns:xsd="http://yyy" xmlns:xsi="http://zzz"></soapenv> </d><e> <![CDATA[ <z></z> ]]></e><f><g></g></f></a>';
sd.xmlmin(xml)
.then(minifiedXML => console.log(minifiedXML))
.catch(error => console.log(error));
```
<br />
### Tests
Install dependencies using `npm install`
Run tests
```
npm test
```
Watch tests
```
npm run test-watch
```
**PARAMETERS:**
`@data` - String; XML, JSON, CSS or SQL text to beautify;
`@preserveComments` - Bool (optional, used in npp.minxml and npp.mincss only);
Set this flag to true to prevent removing comments from @data;
`@Return` - String | Promise(String);
`@indentationCount` - Numeric (optional, used to set number of indentation (per level))
`@indentationChar` - String (optional, indentation character. `SPACE` or `TAB`* will use
respective characters, other values will assume a single space (` `))
*`TAB` may not be visible in your editor within the web browser.