Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork25
Detect the indentation of code
License
sindresorhus/detect-indent
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Detect the indentation of code
Pass in a string of any kind of text and get the indentation.
- Persisting the indentation when modifying a file.
- Have new content match the existing indentation.
- Setting the right indentation in your editor.
npm install detect-indent
Here we modify a JSON file while persisting the indentation:
importfsfrom'node:fs';importdetectIndentfrom'detect-indent';/*{ "ilove": "pizza"}*/constfile=fs.readFileSync('foo.json','utf8');// Tries to detect the indentation and falls back to a default if it can'tconstindent=detectIndent(file).indent||' ';constjson=JSON.parse(file);json.ilove='unicorns';fs.writeFileSync('foo.json',JSON.stringify(json,undefined,indent));/*{ "ilove": "unicorns"}*/
Accepts a string and returns an object with stats about the indentation:
type{'tab' | 'space' | undefined} - The type of indentation. It isundefinedif no indentation is detected.amount{number} - The amount of indentation. For example,2.indent{string} - The actual indentation.
The current algorithm looks for the most common difference between two consecutive non-empty lines. Single-space indentations and changes are ignored by default to prevent common false positives from comment alignment.
In the following example, even if 4-space indentation appears 3 times while 2-space appears only 2 times, the 2-space indentation is detected because there are 4 indent changes of 2 spaces vs only 2 changes of 4 spaces:
html {box-sizing: border-box;}body {background: gray;}p {line-height:1.3em;margin-top:1em;text-indent:2em;}
Furthermore, if there are multiple indent differences with the same usage count, the indentation with the most lines is selected.
In the following example, the indentation is detected as 4-spaces:
body {background: gray;}p {line-height:1.3em;margin-top:1em;text-indent:2em;}
- detect-indent-cli - CLI for this module
- detect-newline - Detect the dominant newline character of a string
- detect-indent-rs - Rust port
- detect-indent-py - Python port
About
Detect the indentation of code
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors13
Uh oh!
There was an error while loading.Please reload this page.