@@ -35,16 +35,10 @@ PadDiff.prototype._isClearAuthorship = function (changeset) {
3535 return false ;
3636 }
3737
38- // lets iterator over the operators
39- const iterator = Changeset . opIterator ( unpacked . ops ) ;
40-
41- // get the first operator, this should be a clear operator
42- const clearOperator = iterator . next ( ) ;
38+ const [ clearOperator , anotherOp ] = Changeset . deserializeOps ( unpacked . ops ) ;
4339
4440 // check if there is only one operator
45- if ( iterator . hasNext ( ) === true ) {
46- return false ;
47- }
41+ if ( anotherOp != null ) return false ;
4842
4943 // check if this operator doesn't change text
5044 if ( clearOperator . opcode !== '=' ) {
@@ -212,18 +206,14 @@ PadDiff.prototype._extendChangesetWithAuthor = (changeset, author, apool) => {
212206 // unpack
213207 const unpacked = Changeset . unpack ( changeset ) ;
214208
215- const iterator = Changeset . opIterator ( unpacked . ops ) ;
216209 const assem = Changeset . opAssembler ( ) ;
217210
218211 // create deleted attribs
219212 const authorAttrib = apool . putAttrib ( [ 'author' , author || '' ] ) ;
220213 const deletedAttrib = apool . putAttrib ( [ 'removed' , true ] ) ;
221214 const attribs = `*${ Changeset . numToString ( authorAttrib ) } *${ Changeset . numToString ( deletedAttrib ) } ` ;
222215
223- // iteratore over the operators of the changeset
224- while ( iterator . hasNext ( ) ) {
225- const operator = iterator . next ( ) ;
226-
216+ for ( const operator of Changeset . deserializeOps ( unpacked . ops ) ) {
227217 if ( operator . opcode === '-' ) {
228218 // this is a delete operator, extend it with the author
229219 operator . attribs = attribs ;
@@ -268,22 +258,23 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
268258
269259 let curLine = 0 ;
270260 let curChar = 0 ;
271- let curLineOpIter = null ;
272- let curLineOpIterLine ;
261+ let curLineOps = null ;
262+ let curLineOpsNext = null ;
263+ let curLineOpsLine ;
273264 let curLineNextOp = new Changeset . Op ( '+' ) ;
274265
275266 const unpacked = Changeset . unpack ( cs ) ;
276- const csIter = Changeset . opIterator ( unpacked . ops ) ;
277267 const builder = Changeset . builder ( unpacked . newLen ) ;
278268
279269 const consumeAttribRuns = ( numChars , func /* (len, attribs, endsLine)*/ ) => {
280- if ( ( ! curLineOpIter ) || ( curLineOpIterLine !== curLine ) ) {
281- // create curLineOpIter and advance it to curChar
282- curLineOpIter = Changeset . opIterator ( aLinesGet ( curLine ) ) ;
283- curLineOpIterLine = curLine ;
270+ if ( ! curLineOps || curLineOpsLine !== curLine ) {
271+ curLineOps = Changeset . deserializeOps ( aLinesGet ( curLine ) ) ;
272+ curLineOpsNext = curLineOps . next ( ) ;
273+ curLineOpsLine = curLine ;
284274 let indexIntoLine = 0 ;
285- while ( curLineOpIter . hasNext ( ) ) {
286- curLineNextOp = curLineOpIter . next ( ) ;
275+ while ( ! curLineOpsNext . done ) {
276+ curLineNextOp = curLineOpsNext . value ;
277+ curLineOpsNext = curLineOps . next ( ) ;
287278 if ( indexIntoLine + curLineNextOp . chars >= curChar ) {
288279 curLineNextOp . chars -= ( curChar - indexIntoLine ) ;
289280 break ;
@@ -293,16 +284,22 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
293284 }
294285
295286 while ( numChars > 0 ) {
296- if ( ( ! curLineNextOp . chars ) && ( ! curLineOpIter . hasNext ( ) ) ) {
287+ if ( ! curLineNextOp . chars && curLineOpsNext . done ) {
297288 curLine ++ ;
298289 curChar = 0 ;
299- curLineOpIterLine = curLine ;
290+ curLineOpsLine = curLine ;
300291 curLineNextOp . chars = 0 ;
301- curLineOpIter = Changeset . opIterator ( aLinesGet ( curLine ) ) ;
292+ curLineOps = Changeset . deserializeOps ( aLinesGet ( curLine ) ) ;
293+ curLineOpsNext = curLineOps . next ( ) ;
302294 }
303295
304296 if ( ! curLineNextOp . chars ) {
305- curLineNextOp = curLineOpIter . hasNext ( ) ? curLineOpIter . next ( ) : new Changeset . Op ( ) ;
297+ if ( curLineOpsNext . done ) {
298+ curLineNextOp = new Changeset . Op ( ) ;
299+ } else {
300+ curLineNextOp = curLineOpsNext . value ;
301+ curLineOpsNext = curLineOps . next ( ) ;
302+ }
306303 }
307304
308305 const charsToUse = Math . min ( numChars , curLineNextOp . chars ) ;
@@ -314,7 +311,7 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
314311 curChar += charsToUse ;
315312 }
316313
317- if ( ( ! curLineNextOp . chars ) && ( ! curLineOpIter . hasNext ( ) ) ) {
314+ if ( ! curLineNextOp . chars && curLineOpsNext . done ) {
318315 curLine ++ ;
319316 curChar = 0 ;
320317 }
@@ -324,7 +321,7 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
324321 if ( L ) {
325322 curLine += L ;
326323 curChar = 0 ;
327- } else if ( curLineOpIter && curLineOpIterLine === curLine ) {
324+ } else if ( curLineOps && curLineOpsLine === curLine ) {
328325 consumeAttribRuns ( N , ( ) => { } ) ;
329326 } else {
330327 curChar += N ;
@@ -361,10 +358,7 @@ PadDiff.prototype._createDeletionChangeset = function (cs, startAText, apool) {
361358 } ;
362359 } ;
363360
364- // iterate over all operators of this changeset
365- while ( csIter . hasNext ( ) ) {
366- const csOp = csIter . next ( ) ;
367-
361+ for ( const csOp of Changeset . deserializeOps ( unpacked . ops ) ) {
368362 if ( csOp . opcode === '=' ) {
369363 const textBank = nextText ( csOp . chars ) ;
370364
0 commit comments