https://github.com/ticky/doc-chomp
🍴 Doc Chomp chomps on your document literals
https://github.com/ticky/doc-chomp
Last synced: 4 months ago
JSON representation
🍴 Doc Chomp chomps on your document literals
- Host: GitHub
- URL: https://github.com/ticky/doc-chomp
- Owner: ticky
- License: mit
- Created: 2016-10-19T01:37:26.000Z (over 9 years ago)
- Default Branch: develop
- Last Pushed: 2026-02-20T18:30:15.000Z (4 months ago)
- Last Synced: 2026-02-20T23:42:06.475Z (4 months ago)
- Language: JavaScript
- Size: 472 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 🍴 Doc Chomp
[](https://www.npmjs.com/package/doc-chomp)  [](https://travis-ci.org/ticky/doc-chomp) [](https://codecov.io/gh/ticky/doc-chomp)
Doc Chomp chomps on your document literals
## Usage
Doc Chomp is useful for keeping nice indentation outside ES6 template literals, while making them internally clean and consistent.
### Automatic
The simplest way to use Doc Chomp is to tag a string!
```javascript
const DocChomp = require('doc-chomp');
let chompedString = DocChomp`
This string will be trimmed such that all indentation matches this line
* Extra indentation is supported just fine
* No problem! 👌🏼
The line after the DocChomp call shouldn't be used, or Doc Chomp will complain!
`
function compareStrings() {
if (chompedString) {
return chompedString === DocChomp`
This string will be trimmed such that all indentation matches this line
* Extra indentation is supported just fine
* No problem! 👌🏼
The line after the DocChomp call shouldn't be used, or Doc Chomp will complain!
`;
}
}
compareStrings(); // true!
```
In this example, `chompedString` will have two space characters trimmed from each line, and the other one will have six removed from each line.
With this usage, the first blank line (adjacent to `DocChomp`) is removed, and no text may be added on that line as DocChomp. If text was accepted here, Doc Chomp couldn't make a good choice about spacing! If you need to put text on that line, you can use the manual modes below!
### Manual
In both of these modes, note that if the line `DocChomp` is on is blank, it will be omitted from the output, and line numbers begin at the next line.
#### Indentation line
If passed a number, Doc Chomp will detect the indentation from that line of the input.
```javascript
function mcGuffin() {
if (this.glazed) {
return chompedString === DocChomp(2)`This string will have six space characters removed from the start of each line
* Because this line is defined as line 2, and used for indentation detection
* 👌🏼
`;
} else {
return chompedString === DocChomp(2)`
This is the "first" line (line 0), according to Doc Chomp, because the above line is blank.
* Which means this is line 2, and used for indentation detection
* No problem! 👌🏼
`;
}
}
```
#### Indentation string
If passed a string, Doc Chomp will remove exactly that indentation from each line.
```javascript
function mcGuffin() {
if (this.glazed) {
return chompedString === DocChomp(' ')`This string will have six space characters removed from the start of each line
* Extra indentation is supported just fine
* No problem! 👌🏼
`;
} else {
return chompedString === DocChomp('\t\t\t')`This string will have three tab characters removed from the start of each line
* Extra indentation is supported just fine
* No problem! 👌🏼
`;
}
}
```