[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare(strict_types=1); 4 5 namespace Doctrine\Inflector; 6 7 use Doctrine\Inflector\Rules\Ruleset; 8 9 use function array_merge; 10 11 /** 12 * Inflects based on multiple rulesets. 13 * 14 * Rules: 15 * - If the word matches any uninflected word pattern, it is not inflected 16 * - The first ruleset that returns a different value for an irregular word wins 17 * - The first ruleset that returns a different value for a regular word wins 18 * - If none of the above match, the word is left as-is 19 */ 20 class RulesetInflector implements WordInflector 21 { 22 /** @var Ruleset[] */ 23 private $rulesets; 24 25 public function __construct(Ruleset $ruleset, Ruleset ...$rulesets) 26 { 27 $this->rulesets = array_merge([$ruleset], $rulesets); 28 } 29 30 public function inflect(string $word): string 31 { 32 if ($word === '') { 33 return ''; 34 } 35 36 foreach ($this->rulesets as $ruleset) { 37 if ($ruleset->getUninflected()->matches($word)) { 38 return $word; 39 } 40 41 $inflected = $ruleset->getIrregular()->inflect($word); 42 43 if ($inflected !== $word) { 44 return $inflected; 45 } 46 47 $inflected = $ruleset->getRegular()->inflect($word); 48 49 if ($inflected !== $word) { 50 return $inflected; 51 } 52 } 53 54 return $word; 55 } 56 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |