
Security News
minimatch Patches 3 High-Severity ReDoS Vulnerabilities
minimatch patched three high-severity ReDoS vulnerabilities that can stall the Node.js event loop, and Socket has released free certified patches.
line-column
Advanced tools
Node module to convert efficiently index to/from line-column in a string.
npm install line-column
Returns a LineColumnFinder instance for given string str.
| Key | Description | Default |
|---|---|---|
origin | The origin value of line number and column number | 1 |
This is just a shorthand for lineColumn(str).fromIndex(index).
Find line and column from index in the string.
Parameters:
index - number Index in the string. (0-origin)Returns:
{ line: x, col: y } Found line number and column number.null if the given index is out of range.Find index from line and column in the string.
Parameters:
line - number Line number in the string.column - number Column number in the string.or
{ line: x, col: y } - Object line and column numbers in the string.column can be used instead of col.or
[ line, col ] - Array line and column numbers in the string.Returns:
number Found index in the string.-1 if the given line or column is out of range.var lineColumn = require("line-column");
var testString = [
"ABCDEFG\n", // line:0, index:0
"HIJKLMNOPQRSTU\n", // line:1, index:8
"VWXYZ\n", // line:2, index:23
"日本語の文字\n", // line:3, index:29
"English words" // line:4, index:36
].join(""); // length:49
lineColumn(testString).fromIndex(3) // { line: 1, col: 4 }
lineColumn(testString).fromIndex(33) // { line: 4, col: 5 }
lineColumn(testString).toIndex(1, 4) // 3
lineColumn(testString).toIndex(4, 5) // 33
// Shorthand of .fromIndex (compatible with find-line-column)
lineColumn(testString, 33) // { line:4, col: 5 }
// Object or Array is also acceptable
lineColumn(testString).toIndex({ line: 4, col: 5 }) // 33
lineColumn(testString).toIndex({ line: 4, column: 5 }) // 33
lineColumn(testString).toIndex([4, 5]) // 33
// You can cache it for the same string. It is so efficient. (See benchmark)
var finder = lineColumn(testString);
finder.fromIndex(33) // { line: 4, column: 5 }
finder.toIndex(4, 5) // 33
// For 0-origin line and column numbers
var oneOrigin = lineColumn(testString, { origin: 0 });
oneOrigin.fromIndex(33) // { line: 3, column: 4 }
oneOrigin.toIndex(3, 4) // 33
npm test
The popular package find-line-column provides the same "index to line-column" feature.
Here is some benchmarking on line-column vs find-line-column. You can run this benchmark by npm run benchmark. See benchmark/ for the source code.
long text + line-column (not cached) x 72,989 ops/sec ±0.83% (89 runs sampled)
long text + line-column (cached) x 13,074,242 ops/sec ±0.32% (89 runs sampled)
long text + find-line-column x 33,887 ops/sec ±0.54% (84 runs sampled)
short text + line-column (not cached) x 1,636,766 ops/sec ±0.77% (82 runs sampled)
short text + line-column (cached) x 21,699,686 ops/sec ±1.04% (82 runs sampled)
short text + find-line-column x 382,145 ops/sec ±1.04% (85 runs sampled)
As you might have noticed, even not cached version of line-column is 2x - 4x faster than find-line-column, and cached version of line-column is remarkable 50x - 380x faster.
git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-featureMIT (See LICENSE)
The line-column-path package provides similar functionality by allowing conversion between line-column pairs and character offsets. It also supports file paths, which can be useful for applications dealing with multiple files. Compared to line-column, it offers additional features for handling file paths.
FAQs
Convert efficiently index to/from line-column in a string
The npm package line-column receives a total of 590,533 weekly downloads. As such, line-column popularity was classified as popular.
We found that line-column demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
minimatch patched three high-severity ReDoS vulnerabilities that can stall the Node.js event loop, and Socket has released free certified patches.

Research
/Security News
Socket uncovered 26 malicious npm packages tied to North Korea's Contagious Interview campaign, retrieving a live 9-module infostealer and RAT from the adversary's C2.

Research
An impersonated golang.org/x/crypto clone exfiltrates passwords, executes a remote shell stager, and delivers a Rekoobe backdoor on Linux.