Security News
Introducing the Socket Python SDK
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
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.
Convert between positional (line and column-based) and offsets (range-based) locations in a virtual file.
This package is ESM only:
Node 12+ is needed to use it and it must be import
ed instead of require
d.
npm:
npm install vfile-location
import {VFile} from 'vfile'
import {location} from 'vfile-location'
var place = location(new VFile('foo\nbar\nbaz'))
var offset = place.toOffset({line: 3, column: 3}) // => 10
place.toPoint(offset) // => {line: 3, column: 3, offset: 10}
This package exports the following identifiers: place
.
There is no default export.
place = location(doc)
Get transform functions for the given doc
(string
) or file
.
Returns an object with toOffset
and toPoint
.
place.toOffset(point)
Get the offset
(number
) for a line and column-based point
in the
bound file.
Returns -1
when given invalid or out of bounds input.
place.toPoint(offset)
Get the line and column-based point
for offset
in the bound file.
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,066,465 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
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.
Security News
A new Rust RFC proposes "Trusted Publishing" for Crates.io, introducing short-lived access tokens via OIDC to improve security and reduce risks associated with long-lived API tokens.