Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
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-feature
git commit -am 'Add some feature'
git push origin my-new-feature
MIT (See LICENSE)
FAQs
Convert efficiently index to/from line-column in a string
The npm package line-column receives a total of 381,291 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
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.