MCPcopy Index your code
hub / github.com/DHTMLX/gantt / domTextBetween

Function domTextBetween

samples/common/codehighlight/codemirror.js:9164–9215  ·  view source on GitHub ↗
(cm, from, to, fromLine, toLine)

Source from the content-addressed store, hash-verified

9162 function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }
9163
9164 function domTextBetween(cm, from, to, fromLine, toLine) {
9165 var text = "", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;
9166 function recognizeMarker(id) { return function (marker) { return marker.id == id; } }
9167 function close() {
9168 if (closing) {
9169 text += lineSep;
9170 if (extraLinebreak) { text += lineSep; }
9171 closing = extraLinebreak = false;
9172 }
9173 }
9174 function addText(str) {
9175 if (str) {
9176 close();
9177 text += str;
9178 }
9179 }
9180 function walk(node) {
9181 if (node.nodeType == 1) {
9182 var cmText = node.getAttribute("cm-text");
9183 if (cmText) {
9184 addText(cmText);
9185 return
9186 }
9187 var markerID = node.getAttribute("cm-marker"), range;
9188 if (markerID) {
9189 var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));
9190 if (found.length && (range = found[0].find(0)))
9191 { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }
9192 return
9193 }
9194 if (node.getAttribute("contenteditable") == "false") { return }
9195 var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);
9196 if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }
9197
9198 if (isBlock) { close(); }
9199 for (var i = 0; i < node.childNodes.length; i++)
9200 { walk(node.childNodes[i]); }
9201
9202 if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }
9203 if (isBlock) { closing = true; }
9204 } else if (node.nodeType == 3) {
9205 addText(node.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " "));
9206 }
9207 }
9208 for (;;) {
9209 walk(from);
9210 if (from == to) { break }
9211 from = from.nextSibling;
9212 extraLinebreak = false;
9213 }
9214 return text
9215 }
9216
9217 function domToPos(cm, node, offset) {
9218 var lineNode;

Callers 1

codemirror.jsFile · 0.85

Calls 1

walkFunction · 0.85

Tested by

no test coverage detected