1.1.0 • Published 8 years ago

doc-chomp v1.1.0

Weekly downloads
204
License
MIT
Repository
-
Last release
8 years ago

🍴 Doc Chomp

npm doc-chomp Build Status codecov

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!

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.

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.

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! 👌🏼
			`;
  }
}