MCPcopy Index your code
hub / github.com/ronreiter/interactive-tutorials / lineContent

Function lineContent

static/js/codemirror/codemirror.js:3944–3993  ·  view source on GitHub ↗
(cm, realLine, measure)

Source from the content-addressed store, hash-verified

3942 }
3943
3944 function lineContent(cm, realLine, measure) {
3945 var merged, line = realLine, lineBefore, sawBefore, simple = true;
3946 while (merged = collapsedSpanAtStart(line)) {
3947 simple = false;
3948 line = getLine(cm.doc, merged.find().from.line);
3949 if (!lineBefore) lineBefore = line;
3950 }
3951
3952 var builder = {pre: elt("pre"), col: 0, pos: 0, display: !measure,
3953 measure: null, addedOne: false, cm: cm};
3954 if (line.textClass) builder.pre.className = line.textClass;
3955
3956 do {
3957 builder.measure = line == realLine && measure;
3958 builder.pos = 0;
3959 builder.addToken = builder.measure ? buildTokenMeasure : buildToken;
3960 if (measure && sawBefore && line != realLine && !builder.addedOne) {
3961 measure[0] = builder.pre.appendChild(zeroWidthElement(cm.display.measure));
3962 builder.addedOne = true;
3963 }
3964 var next = insertLineContent(line, builder, getLineStyles(cm, line));
3965 sawBefore = line == lineBefore;
3966 if (next) {
3967 line = getLine(cm.doc, next.to.line);
3968 simple = false;
3969 }
3970 } while (next);
3971
3972 if (measure && !builder.addedOne)
3973 measure[0] = builder.pre.appendChild(simple ? elt("span", "\u00a0") : zeroWidthElement(cm.display.measure));
3974 if (!builder.pre.firstChild && !lineIsHidden(cm.doc, realLine))
3975 builder.pre.appendChild(document.createTextNode("\u00a0"));
3976
3977 var order;
3978 // Work around problem with the reported dimensions of single-char
3979 // direction spans on IE (issue #1129). See also the comment in
3980 // cursorCoords.
3981 if (measure && ie && (order = getOrder(line))) {
3982 var l = order.length - 1;
3983 if (order[l].from == order[l].to) --l;
3984 var last = order[l], prev = order[l - 1];
3985 if (last.from + 1 == last.to && prev && last.level < prev.level) {
3986 var span = measure[builder.pos - 1];
3987 if (span) span.parentNode.insertBefore(span.measureRight = zeroWidthElement(cm.display.measure),
3988 span.nextSibling);
3989 }
3990 }
3991
3992 return builder.pre;
3993 }
3994
3995 var tokenSpecialChars = /[\t\u0000-\u0019\u200b\u2028\u2029\uFEFF]/g;
3996 function buildToken(builder, text, style, startStyle, endStyle) {

Callers 2

buildLineElementFunction · 0.85
measureLineInnerFunction · 0.85

Calls 9

collapsedSpanAtStartFunction · 0.85
getLineFunction · 0.85
eltFunction · 0.85
zeroWidthElementFunction · 0.85
insertLineContentFunction · 0.85
getLineStylesFunction · 0.85
lineIsHiddenFunction · 0.85
getOrderFunction · 0.85
findMethod · 0.45

Tested by

no test coverage detected