src/Lingua/ComponentConverter.php
<?php namespace WhiteCube\Lingua; class ComponentConverter extends Converter{ public function __toString() { return $this->original['full']; } public static function check($format) { if(!is_array($format)) $format = static::prepare($format); if($format['iso']) return true; return false; } public function parse() { $this->repository = $this->findInRepository(); $this->fillNameBag('script', 'scripts'); $this->fillNameBag('country', 'countries'); $this->iso_639_1 = $this->getIsoValue('iso-639-1'); $this->iso_639_2t = $this->getIsoValue('iso-639-2t'); $this->iso_639_2b = $this->getIsoValue('iso-639-2b'); $this->iso_639_3 = $this->getIsoValue('iso-639-3'); } protected static function getScriptFromPregMatch($matches) { if(!isset($matches[2])) return; if(strlen($matches[2]) !== 4) return; return $matches[2]; } protected static function getCountryFromPregMatch($matches) { if(isset($matches[3]) && strlen($matches[3])) return strtoupper($matches[3]); } protected function findInRepository() { if(!$this->original['iso']) return; if(strlen($this->original['iso']) === 3) {Avoid using static access to class 'WhiteCube\Lingua\LanguagesRepository' in method 'findInRepository'. return LanguagesRepository::find('iso-639-3', $this->original['iso'])Avoid using static access to class 'WhiteCube\Lingua\LanguagesRepository' in method 'findInRepository'. ?? LanguagesRepository::find('iso-639-2t', $this->original['iso'])Avoid using static access to class 'WhiteCube\Lingua\LanguagesRepository' in method 'findInRepository'. ?? LanguagesRepository::find('iso-639-2b', $this->original['iso']); }Avoid using static access to class 'WhiteCube\Lingua\LanguagesRepository' in method 'findInRepository'. return LanguagesRepository::find('iso-639-1', $this->original['iso']); } protected function fillNameBag($item, $key) { if(!$this->original[$item]) return; $this->$item->code = $this->original[$item]; if(!$this->repository) return; $this->$item->name = $this->repository[$key][$this->$item->code] ?? null; } protected function getIsoValue($format) { if($this->repository && $this->repository[$format]){ return $this->repository[$format]; } $length = strlen($this->original['iso']); if($length === 2 && $format != 'iso-639-1') return ''; if($length === 3 && $format == 'iso-639-1') return ''; return $this->original['iso']; }}