56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\b\text;
 | 
						|
 | 
						|
use nur\b\coll\IterableArray;
 | 
						|
use nur\b\ValueException;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class WordManager: un gestionnaire de mots
 | 
						|
 *
 | 
						|
 * Ce gestionnaire permet de stocker la configuration pour certains mots connus
 | 
						|
 */
 | 
						|
class WordManager extends IterableArray {
 | 
						|
  protected function WORDS(): array {
 | 
						|
    return static::WORDS;
 | 
						|
  } const WORDS = [
 | 
						|
    "service" => "le service#s",
 | 
						|
    "direction" => "la direction#s",
 | 
						|
  ];
 | 
						|
 | 
						|
  protected function ADJECTIVES(): array {
 | 
						|
    return static::ADJECTIVES;
 | 
						|
  } const ADJECTIVES = [
 | 
						|
    "ne" => "né#e"
 | 
						|
  ];
 | 
						|
 | 
						|
  function __construct() {
 | 
						|
    $words = [];
 | 
						|
    $i = 0;
 | 
						|
    foreach ($this->WORDS() as $key => $word) {
 | 
						|
      $word = new Word($word);
 | 
						|
      if ($key === $i) $words[] = $word;
 | 
						|
      else $words[$key] = $word;
 | 
						|
      $i++;
 | 
						|
    }
 | 
						|
    $i = 0;
 | 
						|
    foreach ($this->ADJECTIVES() as $key => $adjective) {
 | 
						|
      $word = new Word($adjective, true);
 | 
						|
      if ($key === $i) $words[] = $word;
 | 
						|
      else $words[$key] = $word;
 | 
						|
      $i++;
 | 
						|
    }
 | 
						|
    parent::__construct($words);
 | 
						|
  }
 | 
						|
 | 
						|
  # ArrayAccess
 | 
						|
  function has(string $key): bool { return $this->_has($key); }
 | 
						|
  function get(string $key): Word {
 | 
						|
    return ValueException::check_nn($this->_get($key), "$key: unknown word");
 | 
						|
  }
 | 
						|
  function set(string $key, Word $value): self { return $this->_set($key, $value); }
 | 
						|
  function del(string $key): self { return $this->_del($key); }
 | 
						|
  # Iterator
 | 
						|
  function key(): string { return $this->_key(); }
 | 
						|
  function current(): Word { return $this->_current(); }
 | 
						|
}
 |