# File lib/sadelta.rb, line 275 275: def apply(delta, emitter) 276: while not delta.eof? 277: # there is always at least a character identifying the record and an integer following it 278: c,i = delta.read(5).unpack("cI") 279: 280: # decide which record we have 281: if c == FileEmitter::MATCH 282: length = delta.read(4).unpack("I")[0] 283: emitter.match i,length 284: elsif c == FileEmitter::INSERT 285: data = delta.read(i) 286: emitter.insert 0,i,data 287: else 288: raise "Invalid delta, the delta is probably corrupt." 289: end 290: end 291: 292: emitter.finished 293: end