PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.3
Presto Player v4.3.3
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 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / vendor / level-2 / dice / Extra / RuleValidator.php
presto-player / vendor / level-2 / dice / Extra Last commit date
RuleValidator.php 5 years ago
RuleValidator.php
51 lines
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 }