Security News
Highlights from the 2024 Rails Community Survey
A record 2,709 developers participated in the 2024 Ruby on Rails Community Survey, revealing key tools, practices, and trends shaping the Rails ecosystem.
vfile-location
Advanced tools
vfile utility to convert between positional (line and column-based) and offset (range-based) locations
The vfile-location npm package is a utility tool for working with virtual file objects, specifically designed to map positions in a virtual file to line and column-based locations. This is particularly useful when dealing with transformations or manipulations of text where tracking positions within the original and modified content is necessary.
Location Mapping
This feature allows you to convert between line and column-based locations and absolute positions within a file's content. The `toOffset` method converts a line and column object to a zero-based offset, and the `toPoint` method converts an offset back to a line and column object.
const vfileLocation = require('vfile-location');
const text = 'Hello\nWorld';
const location = vfileLocation(text);
// Get position from line and column
const offset = location.toOffset({line: 2, column: 1}); // Returns 7
// Get line and column from position
const point = location.toPoint(offset); // Returns {line: 2, column: 1}
The 'line-column' npm package provides similar functionality to vfile-location, allowing users to find the line and column position from a character index and vice versa. It differs in its API design and additional options for customization, such as setting the origin index.
While primarily focused on creating text-based columns for display, 'columnify' can also be used to manage text positions similarly to vfile-location. It is more specialized in creating aligned text output but includes position tracking as part of its layout capabilities.
vfile utility to convert between positional (line and column-based) and offsets (range-based) locations.
This is a tiny but useful package to convert between arbitrary places in a file.
This utility is useful when ASTs nodes don’t cut it. For example, when you are making a lint rule that looks for dangerous characters in a file, which you accomplish by searching the raw file value, and still want to report it to users.
This package is ESM only. In Node.js (version 16+), install with npm:
npm install vfile-location
In Deno with esm.sh
:
import {location} from 'https://esm.sh/vfile-location@5'
In browsers with esm.sh
:
<script type="module">
import {location} from 'https://esm.sh/vfile-location@5?bundle'
</script>
import {VFile} from 'vfile'
import {location} from 'vfile-location'
const place = location(new VFile('foo\nbar\nbaz'))
const offset = place.toOffset({line: 3, column: 3}) // => 10
place.toPoint(offset) // => {line: 3, column: 3, offset: 10}
This package exports the identifier location
.
There is no default export.
location(file)
Create an index of the given document to translate between line/column and offset based positional info.
file
(VFile
, Buffer
, or string
)
— file to indexAccessors for index (Location
).
Location
Accessors for index (TypeScript type).
toPoint
((offset: number) => Point | undefined
)
— get the line/column based Point
for offset
in the bound
indicestoOffset
((point: Point) => number | undefined
)
— get the offset
from a line/column based Point
in the bound
indicesThis package is fully typed with TypeScript.
It exports the additional type Location
.
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of
Node.
This means we try to keep the current release line, vfile-location@^5
,
compatible with Node.js 16.
See contributing.md
in vfile/.github
for ways to
get started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.
FAQs
vfile utility to convert between positional (line and column-based) and offset (range-based) locations
The npm package vfile-location receives a total of 3,872,924 weekly downloads. As such, vfile-location popularity was classified as popular.
We found that vfile-location demonstrated a healthy version release cadence and project activity because the last version was released less than 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
A record 2,709 developers participated in the 2024 Ruby on Rails Community Survey, revealing key tools, practices, and trends shaping the Rails ecosystem.
Security News
In 2023, data breaches surged 78% from zero-day and supply chain attacks, but developers are still buried under alerts that are unable to prevent these threats.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.