Skip to content

Commit d11c9de

Browse files
committed
adds only flag
1 parent c47649f commit d11c9de

File tree

3 files changed

+1406
-14
lines changed

3 files changed

+1406
-14
lines changed

highlight-line.js

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ var getLines = function(lineString) {
2020
//matches one or more digits
2121
} else if (/^[\d]+$/.test(val)) {
2222
result[val - 1] = true;
23+
} else {
24+
result[val] = true;
2325
}
2426

2527
}
@@ -61,15 +63,61 @@ function addHighlights() {
6163
});
6264

6365
codeBlock.empty();
66+
if(lines.only) {
67+
var segments = [];
68+
lineMap.forEach(function(lineNodes, lineNumber){
69+
var visible = lines[lineNumber];
70+
var lineNode = document.createElement('span');
71+
$(lineNode).append(lineNodes);
72+
lineNode.className = lines[lineNumber] ? 'line highlight': 'line' ;
6473

65-
for (var key in lineMap) {
66-
if (lineMap.hasOwnProperty(key)) {
67-
var newNode = document.createElement('span');
68-
newNode.className = lines[key] ? 'line highlight': 'line' ;
69-
$(newNode).append(lineMap[key]);
70-
codeBlock.append(newNode);
71-
}
74+
var lastSegment = segments[segments.length - 1];
75+
if(!lastSegment || lastSegment.visible !== visible) {
76+
segments.push(lastSegment = {visible: visible, lines: []});
77+
}
78+
lastSegment.lines.push(lineNode);
79+
80+
81+
});
82+
segments.forEach(function(segment, index){
83+
var next = segments[index+1];
84+
85+
if(segment.visible) {
86+
// take 3 lines from next if possible
87+
if(next) {
88+
var first = next.lines.splice(0,3);
89+
segment.lines = segment.lines.concat(first);
90+
}
91+
codeBlock.append(segment.lines);
92+
} else {
93+
// move 3 lines to next if possible
94+
if(next) {
95+
var last = segment.lines.splice(segment.lines.length-3);
96+
next.lines = last.concat(next.lines);
97+
}
98+
if(segment.lines.length > 2) {
99+
var expander = document.createElement('div');
100+
expander.className = "expand";
101+
expander.addEventListener("click", function(){
102+
$(expander).replaceWith(segment.lines);
103+
});
104+
codeBlock.append(expander);
105+
} else {
106+
codeBlock.append(segment.lines);
107+
}
108+
}
109+
});
110+
111+
112+
} else {
113+
lineMap.forEach(function(lineNodes, lineNumber){
114+
var newNode = document.createElement('span');
115+
newNode.className = lines[lineNumber] ? 'line highlight': 'line' ;
116+
$(newNode).append(lineNodes);
117+
codeBlock.append(newNode);
118+
});
72119
}
120+
73121
});
74122
}
75123

0 commit comments

Comments
 (0)