| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 4 | CRAP |  | 0.00% | 0 / 38 | 
| HWLDFWordAccumulator |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 4 | 132 |  | 0.00% | 0 / 38 | 
| _flushGroup |  | 0.00% | 0 / 1 | 12 |  | 0.00% | 0 / 11 | |||
| _flushLine |  | 0.00% | 0 / 1 | 6 |  | 0.00% | 0 / 9 | |||
| addWords |  | 0.00% | 0 / 1 | 30 |  | 0.00% | 0 / 15 | |||
| getLines |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 3 | |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Component\Diff\Engine\HWLDFWordAccumulator. | |
| */ | |
| namespace Drupal\Component\Diff\Engine; | |
| use Drupal\Component\Utility\Unicode; | |
| /** | |
| * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3 | |
| * | |
| */ | |
| /** | |
| * @todo document | |
| * @private | |
| * @subpackage DifferenceEngine | |
| */ | |
| class HWLDFWordAccumulator { | |
| /** | |
| * An iso-8859-x non-breaking space. | |
| */ | |
| const NBSP = ' '; | |
| protected $lines = array(); | |
| protected $line = ''; | |
| protected $group = ''; | |
| protected $tag = ''; | |
| protected function _flushGroup($new_tag) { | |
| if ($this->group !== '') { | |
| if ($this->tag == 'mark') { | |
| $this->line = $this->line . '<span class="diffchange">' . $this->group . '</span>'; | |
| } | |
| else { | |
| $this->line = $this->line . $this->group; | |
| } | |
| } | |
| $this->group = ''; | |
| $this->tag = $new_tag; | |
| } | |
| protected function _flushLine($new_tag) { | |
| $this->_flushGroup($new_tag); | |
| if ($this->line != '') { | |
| array_push($this->lines, $this->line); | |
| } | |
| else { | |
| // make empty lines visible by inserting an NBSP | |
| array_push($this->lines, $this::NBSP); | |
| } | |
| $this->line = ''; | |
| } | |
| public function addWords($words, $tag = '') { | |
| if ($tag != $this->tag) { | |
| $this->_flushGroup($tag); | |
| } | |
| foreach ($words as $word) { | |
| // new-line should only come as first char of word. | |
| if ($word == '') { | |
| continue; | |
| } | |
| if ($word[0] == "\n") { | |
| $this->_flushLine($tag); | |
| $word = Unicode::substr($word, 1); | |
| } | |
| assert(!strstr($word, "\n")); | |
| $this->group .= $word; | |
| } | |
| } | |
| public function getLines() { | |
| $this->_flushLine('~done'); | |
| return $this->lines; | |
| } | |
| } |