PluginProbe
Presto Player / 4.2.3
Presto Player v4.2.3
4.5.0 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 All 126 releases
presto-player / vendor / level-2 / dice / Extra / RuleValidator.php
RuleValidator.php
51 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace PrestoPlayer\Dice\Extra;
3 class RuleValidator {
4 private $dice;
5
6 public function __construct(\Dice\Dice $dice) {
7 $this->dice = $dice;
8 }
9
10 public function addRule($name, array $rule) {
11 $this->checkValidKeys($rule);
12 $this->checkBoolean($rule, 'inherit');
13 $this->checkBoolean($rule, 'shared');
14 $this->checkNumericArray($rule, 'constructParams');
15 $this->checkNumericArray($rule, 'shareInstances');
16 $this->checkNumericArray($rule, 'call');
17 $this->dice->addRule($name, $rule);
18 }
19
20 private function checkValidKeys($rule) {
21 $validKeys = ['call', 'shared', 'substitutions', 'instanceOf', 'inherit', 'shareInstances', 'constructParams'];
22 foreach ($rule as $name => $value) {
23 if (!in_array($name, $validKeys)) throw new \InvalidArgumentException('Invalid rule option: '. $name);
24 }
25 }
26
27 public function create($name, array $args = [], array $share = []) {
28 return $this->dice->create($name, $args, $share);
29 }
30
31 public function checkBoolean($rule, $key) {
32 if (!isset($rule[$key])) return;
33
34 if (!is_bool($rule[$key])) throw new \InvalidArgumentException('Rule option ' . $key . ' must be true or false');
35 }
36
37 public function checkNumericArray($rule, $key) {
38 if (!isset($rule[$key])) return;
39
40 if (count(array_filter(array_keys($rule[$key]), 'is_string')) > 0) throw new \InvalidArgumentException('Rule option ' . $key . ' must be a seqential array not an associative array');
41
42 }
43
44 public function checkAssocArray($rule, $key) {
45 if (!isset($rule[$key])) return;
46
47 if (count(array_filter(array_keys($rule[$key]), 'is_string')) === 0) throw new \InvalidArgumentException('Rule option ' . $key . ' must be a an associative array');
48
49 }
50
51 }