134 lines
2.8 KiB
Markdown
134 lines
2.8 KiB
Markdown
# Endent [![stability][stability-image]][stability-index]
|
|
|
|
[![npm][npm-image]][npm-url]
|
|
[![travis][travis-image]][travis-url]
|
|
[![dm][dm-image]][npm-url]
|
|
[![js-standard-style][code-style]][standard]
|
|
|
|
[stability-image]: https://img.shields.io/badge/stability-stable-green.svg
|
|
[stability-index]: https://nodejs.org/api/documentation.html#documentation_stability_index
|
|
[npm-image]: https://img.shields.io/npm/v/endent.svg?style=flat-square
|
|
[npm-url]: https://www.npmjs.com/package/endent
|
|
[travis-image]: https://img.shields.io/travis/indentjs/endent.svg?style=flat-square
|
|
[travis-url]: https://travis-ci.org/indentjs/endent
|
|
[dm-image]: http://img.shields.io/npm/dm/endent.svg?style=flat-square
|
|
[code-style]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
|
|
[standard]: https://github.com/feross/standard
|
|
|
|
An ES6 string tag that makes indentation right, adds some key features to [dedent](https://github.com/dmnd/dedent).
|
|
|
|
## Feature
|
|
|
|
### Pretty object
|
|
|
|
```ts
|
|
import dedent from "dedent";
|
|
import endent from "endent";
|
|
|
|
var someobj = {
|
|
contact: {
|
|
jack: 123456,
|
|
tom: 654321,
|
|
},
|
|
color: "blue",
|
|
};
|
|
|
|
var somejson = '["bear", "fish", "dog", "cat"]';
|
|
|
|
var awfulTmpl = dedent`
|
|
function store (state, emitter) {
|
|
state["someobj"] = ${JSON.stringify(someobj, null, 2)}
|
|
state["somejson"] = ${JSON.stringify(JSON.parse(somejson), null, 2)}
|
|
}
|
|
`;
|
|
// use endent.pretty(value) when value is object or array.
|
|
var prettyTmpl = endent`
|
|
function store (state, emitter) {
|
|
state["someobj"] = ${endent.pretty(someobj)}
|
|
state["somejson"] = ${somejson}
|
|
}
|
|
`;
|
|
|
|
console.log(awfulTmpl + "\n\n" + prettyTmpl);
|
|
```
|
|
|
|
```ts
|
|
// awfulTmpl
|
|
function store(state, emitter) {
|
|
state["someobj"] = {
|
|
contact: {
|
|
jack: 123456,
|
|
tom: 654321,
|
|
},
|
|
color: "blue",
|
|
}
|
|
state["somejson"] = [
|
|
"bear",
|
|
"fish",
|
|
"dog",
|
|
"cat"
|
|
]
|
|
}
|
|
|
|
// prettyTmpl
|
|
function store(state, emitter) {
|
|
state["someobj"] = {
|
|
contact: {
|
|
jack: 123456,
|
|
tom: 654321,
|
|
},
|
|
color: "blue",
|
|
}
|
|
state["somejson"] = [
|
|
"bear",
|
|
"fish",
|
|
"dog",
|
|
"cat"
|
|
]
|
|
}
|
|
```
|
|
|
|
### Endows suitable indentation for multiline interpolation
|
|
|
|
```ts
|
|
var dependencies = ["jquery", "underscore", "bootstrap"];
|
|
var dependencyTmpl = ``;
|
|
dependencies.forEach((d, i) => {
|
|
dependencyTmpl += `var ${d} = require("${d}")\n`;
|
|
});
|
|
|
|
var awfulTmpl = dedent`
|
|
;(function () {
|
|
${dependencyTmpl}
|
|
})()
|
|
`;
|
|
|
|
var prettyTmpl = endent`
|
|
;(function () {
|
|
${dependencyTmpl}
|
|
})()
|
|
`;
|
|
|
|
console.log(awfulTmpl + "\n\n" + prettyTmpl);
|
|
```
|
|
|
|
```js
|
|
// awfulTmpl
|
|
(function () {
|
|
var jquery = require("jquery");
|
|
var underscore = require("underscore");
|
|
var bootstrap = require("bootstrap");
|
|
})();
|
|
|
|
// prettyTmpl
|
|
(function () {
|
|
var jquery = require("jquery");
|
|
var underscore = require("underscore");
|
|
var bootstrap = require("bootstrap");
|
|
})();
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|