OpenXE/classes/Modules/HocrParser/Finder/CurrencyCodeFinderFacet.php
2021-05-21 08:49:41 +02:00

76 lines
1.7 KiB
PHP

<?php
namespace Xentral\Modules\HocrParser\Finder;
use Xentral\Modules\HocrParser\Data\BoundingBox;
use Xentral\Modules\HocrParser\Data\BoundingBoxCollection;
class CurrencyCodeFinderFacet implements FinderFacetInterface
{
/** @var array $validCodes */
private $validCodes;
/**
* @param array $validCodes Array mit gültigen Währungscodes (drei-stelliger ISO-Code)
*/
public function __construct(array $validCodes = ['EUR'])
{
$this->validCodes = $validCodes;
}
/**
* @param string $text
*
* @return bool
*/
public function MatchPreCondition($text)
{
if (!$this->IsCurrencyLikeValue($text)) {
return false;
}
if (!$this->IsValidCurrency($text)) {
return false;
}
return true;
}
/**
* @param string $value
*
* @return bool
*/
private function IsCurrencyLikeValue($value)
{
return (bool)preg_match('/^[A-Z]{3}$/', $value);
}
/**
* @param string $value
*
* @return bool
*/
private function IsValidCurrency($value)
{
return in_array($value, $this->validCodes, true);
}
/**
* @param array|BoundingBox[] $candidates
* @param BoundingBoxCollection $boxes
*
* @return string|false
*/
public function Select(array $candidates, BoundingBoxCollection $boxes)
{
if (empty($candidates)) {
return false;
}
// Einfach das erste Ergebnis zurückliefern;
// In den PreConditions wurde schon sichergestellt dass es eine gültige Währung ist
return $candidates[0]->GetData('text');
}
}