HWLDFWordAccumulator.php

Same filename in other branches
  1. 9 core/lib/Drupal/Component/Diff/Engine/HWLDFWordAccumulator.php
  2. 8.9.x core/lib/Drupal/Component/Diff/Engine/HWLDFWordAccumulator.php
  3. 11.x core/lib/Drupal/Component/Diff/Engine/HWLDFWordAccumulator.php

Namespace

Drupal\Component\Diff\Engine

File

core/lib/Drupal/Component/Diff/Engine/HWLDFWordAccumulator.php

View source
<?php

namespace Drupal\Component\Diff\Engine;


/**
 * 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 = '&#160;';
    protected $lines = [];
    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 = mb_substr($word, 1);
            }
            assert(!str_contains($word, "\n"));
            $this->group .= $word;
        }
    }
    public function getLines() {
        $this->_flushLine('~done');
        return $this->lines;
    }

}

Classes

Title Deprecated Summary
HWLDFWordAccumulator @todo document @private @subpackage DifferenceEngine

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.