blob: f9a2d51b3544ca222f0b8b626b4c8aa4a23ac848 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
'use strict';
const tabsToSpaces = require('convert-to-spaces');
const generateLineNumbers = (line, around) => {
const lineNumbers = [];
const min = line - around;
const max = line + around;
for (let lineNumber = min; lineNumber <= max; lineNumber++) {
lineNumbers.push(lineNumber);
}
return lineNumbers;
};
module.exports = (source, line, options) => {
if (typeof source !== 'string') {
throw new TypeError('Source code is missing.');
}
if (!line || line < 1) {
throw new TypeError('Line number must start from `1`.');
}
source = tabsToSpaces(source).split('\n');
if (line > source.length) {
return null;
}
options = Object.assign({around: 3}, options);
return generateLineNumbers(line, options.around)
.filter(line => source[line - 1] !== undefined)
.map(line => ({line, value: source[line - 1]}));
};
|