MCPcopy Index your code
hub / github.com/csev/py4e / insertLineContent

Function insertLineContent

tools/pythonauto/static/codemirror/codemirror.js:4679–4736  ·  view source on GitHub ↗
(line, builder, styles)

Source from the content-addressed store, hash-verified

4677 // Outputs a number of spans to make up a line, taking highlighting
4678 // and marked text into account.
4679 function insertLineContent(line, builder, styles) {
4680 var spans = line.markedSpans, allText = line.text, at = 0;
4681 if (!spans) {
4682 for (var i = 1; i < styles.length; i+=2)
4683 builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder));
4684 return;
4685 }
4686
4687 var len = allText.length, pos = 0, i = 1, text = "", style;
4688 var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;
4689 for (;;) {
4690 if (nextChange == pos) { // Update current marker set
4691 spanStyle = spanEndStyle = spanStartStyle = title = "";
4692 collapsed = null; nextChange = Infinity;
4693 var foundBookmarks = [];
4694 for (var j = 0; j < spans.length; ++j) {
4695 var sp = spans[j], m = sp.marker;
4696 if (sp.from <= pos && (sp.to == null || sp.to > pos)) {
4697 if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; }
4698 if (m.className) spanStyle += " " + m.className;
4699 if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle;
4700 if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle;
4701 if (m.title && !title) title = m.title;
4702 if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))
4703 collapsed = sp;
4704 } else if (sp.from > pos && nextChange > sp.from) {
4705 nextChange = sp.from;
4706 }
4707 if (m.type == "bookmark" && sp.from == pos && m.replacedWith) foundBookmarks.push(m);
4708 }
4709 if (collapsed && (collapsed.from || 0) == pos) {
4710 buildCollapsedSpan(builder, (collapsed.to == null ? len : collapsed.to) - pos,
4711 collapsed.marker, collapsed.from == null);
4712 if (collapsed.to == null) return collapsed.marker.find();
4713 }
4714 if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j)
4715 buildCollapsedSpan(builder, 0, foundBookmarks[j]);
4716 }
4717 if (pos >= len) break;
4718
4719 var upto = Math.min(len, nextChange);
4720 while (true) {
4721 if (text) {
4722 var end = pos + text.length;
4723 if (!collapsed) {
4724 var tokenText = end > upto ? text.slice(0, upto - pos) : text;
4725 builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,
4726 spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title);
4727 }
4728 if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}
4729 pos = end;
4730 spanStartStyle = "";
4731 }
4732 text = allText.slice(at, at = styles[i++]);
4733 style = interpretTokenStyle(styles[i++], builder);
4734 }
4735 }
4736 }

Callers 1

buildLineContentFunction · 0.70

Calls 5

sliceMethod · 0.80
interpretTokenStyleFunction · 0.70
compareCollapsedMarkersFunction · 0.70
buildCollapsedSpanFunction · 0.70
findMethod · 0.45

Tested by

no test coverage detected