if n.type is TYPE_TEXT
i = 0
while i < n.text.length # don't foreach, cb might remove chars
- removed = cb n, i
- unless removed
+ advance = cb n, i
+ if advance
i += 1
if n.type is TYPE_TAG
block = is_display_block n.el
next = n
next_i = i
next_px = null
+ advance = true
if cur?
removed = operate()
+ # don't advance (to the next character next time) if we removed a
+ # character from the same text node as ``next``, because doing so
+ # renumbers the indexes in that string
+ if removed and cur is next
+ advance = false
else
removed = false
unless removed
cur = next
cur_i = next_i
cur_px = next_px
- return removed
+ return advance
queue null
iterate tree, queue
queue null
<h1>Peach HTML5 Editor test page (compiled version)</h1>
<p>This version of the editor test page requires that you've compiled all the source files. (Just run <code>make</code>).</p>
<form action="#" method="get">
- <p>HTML view. Changes here propagate when you remove your cursor (press tab or click outside)<br><textarea rows="9" cols="22" name="in" id="in"><p> a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z <strong>Bold <em> Italic+Bold</strong> Italic</em> Normal</p>
+ <p>HTML view. Changes here propagate when you remove your cursor (press tab or click outside)<br><textarea rows="9" cols="22" name="in" id="in"><p> a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z <strong>Bold <em> Italic+Bold</strong> Italic </em> Normal</p>
<div>
<div>I'm in a div</div>