1<?php 2/** 3 * Copyright 2007-2017 Horde LLC (http://www.horde.org/) 4 * 5 * See the enclosed file COPYING for license information (LGPL). If you did 6 * not receive this file, see http://www.horde.org/licenses/lgpl21. 7 * 8 * @package Text_Diff 9 * @author Geoffrey T. Dairiki <dairiki@dairiki.org> 10 */ 11class Horde_Text_Diff_ThreeWay_BlockBuilder 12{ 13 public function __construct() 14 { 15 $this->_init(); 16 } 17 18 public function input($lines) 19 { 20 if ($lines) { 21 $this->_append($this->orig, $lines); 22 } 23 } 24 25 public function out1($lines) 26 { 27 if ($lines) { 28 $this->_append($this->final1, $lines); 29 } 30 } 31 32 public function out2($lines) 33 { 34 if ($lines) { 35 $this->_append($this->final2, $lines); 36 } 37 } 38 39 public function isEmpty() 40 { 41 return !$this->orig && !$this->final1 && !$this->final2; 42 } 43 44 public function finish() 45 { 46 if ($this->isEmpty()) { 47 return false; 48 } else { 49 $edit = new Horde_Text_Diff_ThreeWay_Op_Base($this->orig, $this->final1, $this->final2); 50 $this->_init(); 51 return $edit; 52 } 53 } 54 55 protected function _init() 56 { 57 $this->orig = $this->final1 = $this->final2 = array(); 58 } 59 60 protected function _append(&$array, $lines) 61 { 62 array_splice($array, sizeof($array), 0, $lines); 63 } 64} 65