19 namespace cogpowered\FineDiff\Render;
22 use InvalidArgumentException;
34 public function process($from_text, $opcodes)
38 throw new InvalidArgumentException(
'Invalid opcodes type');
40 $opcodes = ($opcodes instanceof OpcodesInterface) ? $opcodes->generate() : $opcodes;
46 $opcodes_len = strlen($opcodes);
50 while ($opcodes_offset < $opcodes_len) {
52 $opcode = substr($opcodes, $opcodes_offset, 1);
54 $n = intval(substr($opcodes, $opcodes_offset));
57 $opcodes_offset += strlen(strval($n));
62 if ($opcode ===
'c') {
64 $data = $this->
callback(
'c', $from_text, $from_offset, $n);
66 }
else if ($opcode ===
'd') {
68 $data = $this->
callback(
'd', $from_text, $from_offset, $n);
72 $data = $this->
callback(
'i', $opcodes, $opcodes_offset + 1, $n);
73 $opcodes_offset += 1 + $n;