nl_tokens: Internal function to remove bound nodes and replace them with markers .
pl_tokens: function processNodes ( scope , node , def ) { var document = scope ? scope . document : window . document var key , branch , result , mirrorNode , parent , marker , indices var i , j , treeWalker , orderedKeys result = def [ templateKey ] if ( ! result ) { node = node . cloneNode ( true ) indices = [ ] matchNodes ( scope , node , def ) orderedKeys = Object . keys ( def ) . sort ( function ( a , b ) { var nodeA = def [ a ] [ 0 ] [ matchedNodeKey ] var nodeB = def [ b ] [ 0 ] [ matchedNodeKey ] if ( nodeA && nodeB ) return nodeA . index - nodeB . index return 0 } ) for ( i = 0 ; i < orderedKeys . length ; i ++ ) { key = orderedKeys [ i ] branch = def [ key ] if ( branch [ isBoundToParentKey ] ) <mask> result = branch [ 0 ] [ matchedNodeKey ] indices . push ( result . index ) mirrorNode = result . node parent = mirrorNode . parentNode // This value is memoized so that `appendChild` can be used instead of // `insertBefore`, which is a performance optimization. if ( mirrorNode . nextElementSibling === null ) branch [ isMarkerLastKey ] = true if ( processNodes . useCommentNode ) { marker = parent . insertBefore ( document . createComment ( ' end "' + key + '" ' ) , mirrorNode ) parent . insertBefore ( document . createComment ( ' begin "' + key + '" ' ) , marker ) } else marker = parent . insertBefore ( document . createTextNode ( '' ) , mirrorNode ) branch [ markerKey ] = marker parent . removeChild ( mirrorNode ) } Object . defineProperty ( def , templateKey , { value : { node : node . cloneNode ( true ) , indices : indices } } ) } else { node = result . node . cloneNode ( true ) indices = result . indices i = 0 j = 0 treeWalker = document . createTreeWalker ( node , showAll , acceptNode , false ) for ( key in def ) { branch = def [ key ] if ( branch [ isBoundToParentKey ] ) continue while ( treeWalker . nextNode ( ) ) { if ( i === indices [ j ] ) { branch [ markerKey ] = treeWalker . currentNode i ++ break } i ++ } j ++ } } return node }