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

Function buildLineContent

tools/pythonauto/static/codemirror/codemirror.js:4520–4569  ·  view source on GitHub ↗
(cm, realLine, measure, copyWidgets)

Source from the content-addressed store, hash-verified

4518 }
4519
4520 function buildLineContent(cm, realLine, measure, copyWidgets) {
4521 var merged, line = realLine, empty = true;
4522 while (merged = collapsedSpanAtStart(line))
4523 line = getLine(cm.doc, merged.find().from.line);
4524
4525 var builder = {pre: elt("pre"), col: 0, pos: 0,
4526 measure: null, measuredSomething: false, cm: cm,
4527 copyWidgets: copyWidgets};
4528
4529 do {
4530 if (line.text) empty = false;
4531 builder.measure = line == realLine && measure;
4532 builder.pos = 0;
4533 builder.addToken = builder.measure ? buildTokenMeasure : buildToken;
4534 if ((ie || webkit) && cm.getOption("lineWrapping"))
4535 builder.addToken = buildTokenSplitSpaces(builder.addToken);
4536 var next = insertLineContent(line, builder, getLineStyles(cm, line));
4537 if (measure && line == realLine && !builder.measuredSomething) {
4538 measure[0] = builder.pre.appendChild(zeroWidthElement(cm.display.measure));
4539 builder.measuredSomething = true;
4540 }
4541 if (next) line = getLine(cm.doc, next.to.line);
4542 } while (next);
4543
4544 if (measure && !builder.measuredSomething && !measure[0])
4545 measure[0] = builder.pre.appendChild(empty ? elt("span", "\u00a0") : zeroWidthElement(cm.display.measure));
4546 if (!builder.pre.firstChild && !lineIsHidden(cm.doc, realLine))
4547 builder.pre.appendChild(document.createTextNode("\u00a0"));
4548
4549 var order;
4550 // Work around problem with the reported dimensions of single-char
4551 // direction spans on IE (issue #1129). See also the comment in
4552 // cursorCoords.
4553 if (measure && ie && (order = getOrder(line))) {
4554 var l = order.length - 1;
4555 if (order[l].from == order[l].to) --l;
4556 var last = order[l], prev = order[l - 1];
4557 if (last.from + 1 == last.to && prev && last.level < prev.level) {
4558 var span = measure[builder.pos - 1];
4559 if (span) span.parentNode.insertBefore(span.measureRight = zeroWidthElement(cm.display.measure),
4560 span.nextSibling);
4561 }
4562 }
4563
4564 var textClass = builder.textClass ? builder.textClass + " " + (realLine.textClass || "") : realLine.textClass;
4565 if (textClass) builder.pre.className = textClass;
4566
4567 signal(cm, "renderLine", cm, realLine, builder.pre);
4568 return builder;
4569 }
4570
4571 function defaultSpecialCharPlaceholder(ch) {
4572 var token = elt("span", "\u2022", "cm-invalidchar");

Callers 3

buildLineElementFunction · 0.70
measureLineInnerFunction · 0.70
measureLineWidthFunction · 0.70

Calls 13

signalFunction · 0.85
collapsedSpanAtStartFunction · 0.70
getLineFunction · 0.70
eltFunction · 0.70
buildTokenSplitSpacesFunction · 0.70
insertLineContentFunction · 0.70
getLineStylesFunction · 0.70
zeroWidthElementFunction · 0.70
lineIsHiddenFunction · 0.70
getOrderFunction · 0.70
findMethod · 0.45
appendChildMethod · 0.45

Tested by

no test coverage detected