MCPcopy Create free account
hub / github.com/breck7/scroll / domTextBetween

Function domTextBetween

external/.scrollLibs.js:12494–12569  ·  view source on GitHub ↗
(cm, from, to, fromLine, toLine)

Source from the content-addressed store, hash-verified

12492 }
12493
12494 function domTextBetween(cm, from, to, fromLine, toLine) {
12495 var text = "",
12496 closing = false,
12497 lineSep = cm.doc.lineSeparator(),
12498 extraLinebreak = false
12499 function recognizeMarker(id) {
12500 return function (marker) {
12501 return marker.id == id
12502 }
12503 }
12504 function close() {
12505 if (closing) {
12506 text += lineSep
12507 if (extraLinebreak) {
12508 text += lineSep
12509 }
12510 closing = extraLinebreak = false
12511 }
12512 }
12513 function addText(str) {
12514 if (str) {
12515 close()
12516 text += str
12517 }
12518 }
12519 function walk(node) {
12520 if (node.nodeType == 1) {
12521 var cmText = node.getAttribute("cm-text")
12522 if (cmText) {
12523 addText(cmText)
12524 return
12525 }
12526 var markerID = node.getAttribute("cm-marker"),
12527 range$$1
12528 if (markerID) {
12529 var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID))
12530 if (found.length && (range$$1 = found[0].find(0))) {
12531 addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep))
12532 }
12533 return
12534 }
12535 if (node.getAttribute("contenteditable") == "false") {
12536 return
12537 }
12538 var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName)
12539 if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {
12540 return
12541 }
12542
12543 if (isBlock) {
12544 close()
12545 }
12546 for (var i = 0; i < node.childNodes.length; i++) {
12547 walk(node.childNodes[i])
12548 }
12549
12550 if (/^(pre|p)$/i.test(node.nodeName)) {
12551 extraLinebreak = true

Callers 1

.scrollLibs.jsFile · 0.85

Calls 1

walkFunction · 0.85

Tested by

no test coverage detected