locate-character
Advanced tools
Comparing version 2.0.0 to 2.0.1
# locate-character changelog | ||
## 2.0.1 | ||
* Port to TypeScript, add typings (no change in functionality) | ||
## 2.0.0 | ||
@@ -4,0 +8,0 @@ |
@@ -1,54 +0,43 @@ | ||
function getLocator ( source, options ) { | ||
if ( options === void 0 ) options = {}; | ||
var offsetLine = options.offsetLine || 0; | ||
var offsetColumn = options.offsetColumn || 0; | ||
var originalLines = source.split( '\n' ); | ||
var start = 0; | ||
var lineRanges = originalLines.map( function ( line, i ) { | ||
var end = start + line.length + 1; | ||
var range = { start: start, end: end, line: i }; | ||
start = end; | ||
return range; | ||
}); | ||
var i = 0; | ||
function rangeContains ( range, index ) { | ||
return range.start <= index && index < range.end; | ||
} | ||
function getLocation ( range, index ) { | ||
return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index }; | ||
} | ||
return function locate ( search, startIndex ) { | ||
if ( typeof search === 'string' ) { | ||
search = source.indexOf( search, startIndex || 0 ); | ||
} | ||
var range = lineRanges[i]; | ||
var d = search >= range.end ? 1 : -1; | ||
while ( range ) { | ||
if ( rangeContains( range, search ) ) return getLocation( range, search ); | ||
i += d; | ||
range = lineRanges[i]; | ||
} | ||
}; | ||
function getLocator(source, options) { | ||
if (options === void 0) { options = {}; } | ||
var offsetLine = options.offsetLine || 0; | ||
var offsetColumn = options.offsetColumn || 0; | ||
var originalLines = source.split('\n'); | ||
var start = 0; | ||
var lineRanges = originalLines.map(function (line, i) { | ||
var end = start + line.length + 1; | ||
var range = { start: start, end: end, line: i }; | ||
start = end; | ||
return range; | ||
}); | ||
var i = 0; | ||
function rangeContains(range, index) { | ||
return range.start <= index && index < range.end; | ||
} | ||
function getLocation(range, index) { | ||
return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index }; | ||
} | ||
function locate(search, startIndex) { | ||
if (typeof search === 'string') { | ||
search = source.indexOf(search, startIndex || 0); | ||
} | ||
var range = lineRanges[i]; | ||
var d = search >= range.end ? 1 : -1; | ||
while (range) { | ||
if (rangeContains(range, search)) | ||
return getLocation(range, search); | ||
i += d; | ||
range = lineRanges[i]; | ||
} | ||
} | ||
; | ||
return locate; | ||
} | ||
function locate ( source, search, options ) { | ||
if ( typeof options === 'number' ) { | ||
throw new Error( 'locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument' ); | ||
} | ||
return getLocator( source, options )( search, options && options.startIndex ); | ||
function locate(source, search, options) { | ||
if (typeof options === 'number') { | ||
throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument'); | ||
} | ||
return getLocator(source, options)(search, options && options.startIndex); | ||
} | ||
export { getLocator, locate }; |
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(factory((global.locateCharacter = global.locateCharacter || {}))); | ||
}(this, function (exports) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(factory((global.locateCharacter = global.locateCharacter || {}))); | ||
}(this, (function (exports) { 'use strict'; | ||
function getLocator ( source, options ) { | ||
if ( options === void 0 ) options = {}; | ||
function getLocator(source, options) { | ||
if (options === void 0) { options = {}; } | ||
var offsetLine = options.offsetLine || 0; | ||
var offsetColumn = options.offsetColumn || 0; | ||
var originalLines = source.split('\n'); | ||
var start = 0; | ||
var lineRanges = originalLines.map(function (line, i) { | ||
var end = start + line.length + 1; | ||
var range = { start: start, end: end, line: i }; | ||
start = end; | ||
return range; | ||
}); | ||
var i = 0; | ||
function rangeContains(range, index) { | ||
return range.start <= index && index < range.end; | ||
} | ||
function getLocation(range, index) { | ||
return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index }; | ||
} | ||
function locate(search, startIndex) { | ||
if (typeof search === 'string') { | ||
search = source.indexOf(search, startIndex || 0); | ||
} | ||
var range = lineRanges[i]; | ||
var d = search >= range.end ? 1 : -1; | ||
while (range) { | ||
if (rangeContains(range, search)) | ||
return getLocation(range, search); | ||
i += d; | ||
range = lineRanges[i]; | ||
} | ||
} | ||
; | ||
return locate; | ||
} | ||
function locate(source, search, options) { | ||
if (typeof options === 'number') { | ||
throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument'); | ||
} | ||
return getLocator(source, options)(search, options && options.startIndex); | ||
} | ||
var offsetLine = options.offsetLine || 0; | ||
var offsetColumn = options.offsetColumn || 0; | ||
exports.getLocator = getLocator; | ||
exports.locate = locate; | ||
var originalLines = source.split( '\n' ); | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var start = 0; | ||
var lineRanges = originalLines.map( function ( line, i ) { | ||
var end = start + line.length + 1; | ||
var range = { start: start, end: end, line: i }; | ||
start = end; | ||
return range; | ||
}); | ||
var i = 0; | ||
function rangeContains ( range, index ) { | ||
return range.start <= index && index < range.end; | ||
} | ||
function getLocation ( range, index ) { | ||
return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index }; | ||
} | ||
return function locate ( search, startIndex ) { | ||
if ( typeof search === 'string' ) { | ||
search = source.indexOf( search, startIndex || 0 ); | ||
} | ||
var range = lineRanges[i]; | ||
var d = search >= range.end ? 1 : -1; | ||
while ( range ) { | ||
if ( rangeContains( range, search ) ) return getLocation( range, search ); | ||
i += d; | ||
range = lineRanges[i]; | ||
} | ||
}; | ||
} | ||
function locate ( source, search, options ) { | ||
if ( typeof options === 'number' ) { | ||
throw new Error( 'locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument' ); | ||
} | ||
return getLocator( source, options )( search, options && options.startIndex ); | ||
} | ||
exports.getLocator = getLocator; | ||
exports.locate = locate; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
})); | ||
}))); |
{ | ||
"name": "locate-character", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"description": "Get the line and column number of a specific character in a string", | ||
@@ -39,4 +39,6 @@ "main": "dist/locate-character.umd.js", | ||
"rollup": "^0.34.7", | ||
"rollup-plugin-buble": "^0.12.1" | ||
} | ||
"rollup-plugin-typescript": "^0.8.1", | ||
"typescript": "^2.3.2" | ||
}, | ||
"types": "./types.d.ts" | ||
} |
@@ -7,3 +7,3 @@ # locate-character | ||
`npm install locate-character`, or get it from [npmcdn.com/locate-character](https://npmcdn.com/locate-character). | ||
`npm install locate-character`, or get it from [unpkg.com/locate-character](https://unpkg.com/locate-character). | ||
@@ -10,0 +10,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
6452
90
4