File: //usr/share/opensearch-dashboards/node_modules/vfile-location/index.js
'use strict'
module.exports = factory
function factory(file) {
var value = String(file)
var indices = []
var search = /\r?\n|\r/g
while (search.exec(value)) {
indices.push(search.lastIndex)
}
indices.push(value.length + 1)
return {
toPoint: offsetToPoint,
toPosition: offsetToPoint,
toOffset: pointToOffset
}
// Get the line and column-based `point` for `offset` in the bound indices.
function offsetToPoint(offset) {
var index = -1
if (offset > -1 && offset < indices[indices.length - 1]) {
while (++index < indices.length) {
if (indices[index] > offset) {
return {
line: index + 1,
column: offset - (indices[index - 1] || 0) + 1,
offset: offset
}
}
}
}
return {}
}
// Get the `offset` for a line and column-based `point` in the bound
// indices.
function pointToOffset(point) {
var line = point && point.line
var column = point && point.column
var offset
if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {
offset = (indices[line - 2] || 0) + column - 1 || 0
}
return offset > -1 && offset < indices[indices.length - 1] ? offset : -1
}
}