<?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'); } }