Browse Source

Update indexes after HTML conversion.

master
Alex Puiu 2 years ago
parent
commit
2b142a7836
  1. 71
      app/SearchDisplace/Output/HtmlOutput.php
  2. 40
      app/SearchDisplace/SearchAndDisplaceJSON.php

71
app/SearchDisplace/Output/HtmlOutput.php

@ -0,0 +1,71 @@
<?php
namespace App\SearchDisplace\Output;
class HtmlOutput {
protected $data;
protected $content;
protected $indexes = [];
protected $additions = [];
public function __construct($data)
{
$this->content = $data['content'];
$this->indexes = $data['indexes'];
}
public function getData()
{
$html = $this->convertToHTML();
$indexes = $this->updateIndexes();
return [
'content' => $html,
'indexes' => $indexes
];
}
protected function convertToHTML()
{
$html = '';
$url = url('/') . '/contracts-images';
foreach($this->content as $key => $element) {
$diff = 0;
if($element->tag !== 'img') {
$html .= "<$element->tag style=\"$element->style\">$element->content</$element->tag>";
} else {
$src = $url . '/' . str_replace(' ', '%20', $element->src);
$html .= "<img $element->style src=\"$src\" alt=\"$element->details\">";
}
if($key !== array_key_last($this->content)) {
$html .= '<br>';
$diff = 4;
}
if(isset($element->paragraph)) {
$this->additions[$element->paragraph][] = strlen($html) - strlen($element->content) - strlen("</$element->tag>") - $diff;
}
}
return $html;
}
protected function updateIndexes()
{
$indexes = $this->indexes;
foreach($this->additions as $akey => $addition) {
foreach($addition as $ckey => $change) {
$indexes[$akey][$ckey]['start'] += $change;
$indexes[$akey][$ckey]['end'] += $change;
$indexes[$akey][$ckey]['original_start'] += $change;
$indexes[$akey][$ckey]['original_end'] += $change;
}
}
return $indexes;
}
}

40
app/SearchDisplace/SearchAndDisplaceJSON.php

@ -3,6 +3,7 @@
namespace App\SearchDisplace;
use Illuminate\Support\Facades\Storage;
use App\SearchDisplace\Output\HtmlOutput;
class SearchAndDisplaceJSON
{
@ -31,12 +32,11 @@ class SearchAndDisplaceJSON
return;
}
$sd = $this->applySD($content);
$searchDisplace = $this->applySD($content);
return [
'content' => $this->convertToHTML($sd['content']),
'indexes' => $sd['indexes']
];
$convert = new HtmlOutput($searchDisplace);
return $convert->getData();
}
protected function getContent()
@ -64,7 +64,14 @@ class SearchAndDisplaceJSON
$changed = $search->execute();
if($changed) {
$indexes = $changed['indexes'];
foreach($changed['indexes'] as $key => $searcher) {
foreach($searcher as $change) {
if($change['start']) {
$indexes[$key][] = $change;
$element->paragraph = $key;
}
}
}
$element->content = $changed['content'];
}
}
@ -74,25 +81,4 @@ class SearchAndDisplaceJSON
'indexes' => $indexes
];
}
protected function convertToHTML($elements)
{
$html = '';
$url = url('/') . '/contracts-images';
foreach($elements as $key => $element) {
if($element->tag !== 'img') {
$html .= "<$element->tag style=\"$element->style\">$element->content</$element->tag>";
} else {
$src = $url . '/' . str_replace(' ', '%20', $element->src);
$html .= "<img $element->style src=\"$src\" alt=\"$element->details\">";
}
if($key !== array_key_last($elements)) {
$html .= '<br>';
}
}
return $html;
}
}
Loading…
Cancel
Save