diff options
Diffstat (limited to 'deps/npm/node_modules/detect-indent/readme.md')
-rw-r--r-- | deps/npm/node_modules/detect-indent/readme.md | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/deps/npm/node_modules/detect-indent/readme.md b/deps/npm/node_modules/detect-indent/readme.md new file mode 100644 index 0000000000..3aeb1badf7 --- /dev/null +++ b/deps/npm/node_modules/detect-indent/readme.md @@ -0,0 +1,111 @@ +# detect-indent [![Build Status](https://travis-ci.org/sindresorhus/detect-indent.svg?branch=master)](https://travis-ci.org/sindresorhus/detect-indent) + +> Detect the indentation of code + +Pass in a string of any kind of text and get the indentation. + + +## Use cases + +- Persisting the indentation when modifying a file. +- Have new content match the existing indentation. +- Setting the right indentation in your editor. + + +## Install + +``` +$ npm install --save detect-indent +``` + + +## Usage + +Here we modify a JSON file while persisting the indentation: + +```js +const fs = require('fs'); +const detectIndent = require('detect-indent'); + +/* +{ + "ilove": "pizza" +} +*/ +const file = fs.readFileSync('foo.json', 'utf8'); + +// tries to detect the indentation and falls back to a default if it can't +const indent = detectIndent(file).indent || ' '; + +const json = JSON.parse(file); + +json.ilove = 'unicorns'; + +fs.writeFileSync('foo.json', JSON.stringify(json, null, indent)); +/* +{ + "ilove": "unicorns" +} +*/ +``` + + +## API + +Accepts a string and returns an object with stats about the indentation: + +* `amount` {number} - Amount of indentation, for example `2` +* `type` {string|null} - Type of indentation. Possible values are `tab`, `space` or `null` if no indentation is detected +* `indent` {string} - Actual indentation + + +## Algorithm + +The current algorithm looks for the most common difference between two consecutive non-empty lines. + +In the following example, even if the 4-space indentation is used 3 times whereas the 2-space one is used 2 times, it is detected as less used because there were only 2 differences with this value instead of 4 for the 2-space indentation: + +```css +html { + box-sizing: border-box; +} + +body { + background: gray; +} + +p { + line-height: 1.3em; + margin-top: 1em; + text-indent: 2em; +} +``` + +[Source.](https://medium.com/@heatherarthur/detecting-code-indentation-eff3ed0fb56b#3918) + +Furthermore, if there are more than one most used difference, the indentation with the most lines is selected. + +In the following example, the indentation is detected as 4-spaces: + +```css +body { + background: gray; +} + +p { + line-height: 1.3em; + margin-top: 1em; + text-indent: 2em; +} +``` + + +## Related + +- [detect-indent-cli](https://github.com/sindresorhus/detect-indent-cli) - CLI for this module +- [detect-newline](https://github.com/sindresorhus/detect-newline) - Detect the dominant newline character of a string + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) |