detect-indent alternatives and similar modules
Based on the "Text" category.
Alternatively, view detect-indent alternatives based on common mentions on social networks and blogs.
-
nanoid
A tiny (124 bytes), secure, URL-friendly, unique string ID generator for JavaScript -
Flexsearch
Next-Generation full text search library for Browser and Node.js -
Numeral.js
A javascript library for formatting and manipulating numbers. -
Underscore.string
String manipulation helpers for javascript -
i18n-node
Lightweight simple translation module for node.js / express.js with dynamic json storage. Uses common __('...') syntax in app and templates. -
StegCloak
Hide secrets with invisible characters in plain text securely using passwords ๐ง๐ปโโ๏ธโญ -
camelcase
Convert a dash/dot/underscore/space separated string to camelCase: foo-bar โ fooBar -
babelfish
human friendly i18n for javascript (node.js + browser) -
string-length
Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes -
strip-indent
Strip leading whitespace from each line in a string -
parse-columns
Parse text columns, like the output of unix commands -
unhomoglyph
Replace all homoglyphs with base characters. Useful to detect similar strings. -
splice-string
Remove or replace part of a string like Array#splice -
hanging-indent
format a string into a hanging indent with Node.js
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of detect-indent or a related project?
README
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 detect-indent
Usage
Here we modify a JSON file while persisting the indentation:
import fs from 'node:fs';
import detectIndent from '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, undefined, indent));
/*
{
"ilove": "unicorns"
}
*/
API
Accepts a string and returns an object with stats about the indentation:
amount
{number} - Amount of indentation, for example2
type
{'tab' | 'space' | undefined} - Type of indentation. Possible values are'tab'
,'space'
orundefined
if no indentation is detectedindent
{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:
html {
box-sizing: border-box;
}
body {
background: gray;
}
p {
line-height: 1.3em;
margin-top: 1em;
text-indent: 2em;
}
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:
body {
background: gray;
}
p {
line-height: 1.3em;
margin-top: 1em;
text-indent: 2em;
}
Related
- detect-indent-cli - CLI for this module
- detect-newline - Detect the dominant newline character of a string
- detect-indent-rs - Rust port
Get professional support for this package with a Tidelift subscription Tidelift helps make open source sustainable for maintainers while giving companiesassurances about security, maintenance, and licensing for their dependencies.