33 lines
651 B
JavaScript
33 lines
651 B
JavaScript
|
class HighlightLines {
|
||
|
constructor(rangeStr) {
|
||
|
this.highlights = this.convertRangeToHash(rangeStr);
|
||
|
}
|
||
|
|
||
|
convertRangeToHash(rangeStr) {
|
||
|
let hash = {};
|
||
|
if( !rangeStr ) {
|
||
|
return hash;
|
||
|
}
|
||
|
|
||
|
let ranges = rangeStr.split(",").map(function(range) {
|
||
|
return range.trim();
|
||
|
});
|
||
|
|
||
|
for(let range of ranges) {
|
||
|
let startFinish = range.split('-');
|
||
|
let start = parseInt(startFinish[0], 10);
|
||
|
let end = parseInt(startFinish[1] || start, 10);
|
||
|
|
||
|
for( let j = start, k = end; j<=k; j++ ) {
|
||
|
hash[j] = true;
|
||
|
}
|
||
|
}
|
||
|
return hash;
|
||
|
}
|
||
|
|
||
|
isHighlighted(lineNumber) {
|
||
|
return !!this.highlights[lineNumber]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = HighlightLines;
|