Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Prophecy.
|
Chris@0
|
5 * (c) Konstantin Kudryashov <ever.zet@gmail.com>
|
Chris@0
|
6 * Marcello Duarte <marcello.duarte@gmail.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Prophecy\Argument\Token;
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * Array every entry token.
|
Chris@0
|
16 *
|
Chris@0
|
17 * @author Adrien Brault <adrien.brault@gmail.com>
|
Chris@0
|
18 */
|
Chris@0
|
19 class ArrayEveryEntryToken implements TokenInterface
|
Chris@0
|
20 {
|
Chris@0
|
21 /**
|
Chris@0
|
22 * @var TokenInterface
|
Chris@0
|
23 */
|
Chris@0
|
24 private $value;
|
Chris@0
|
25
|
Chris@0
|
26 /**
|
Chris@0
|
27 * @param mixed $value exact value or token
|
Chris@0
|
28 */
|
Chris@0
|
29 public function __construct($value)
|
Chris@0
|
30 {
|
Chris@0
|
31 if (!$value instanceof TokenInterface) {
|
Chris@0
|
32 $value = new ExactValueToken($value);
|
Chris@0
|
33 }
|
Chris@0
|
34
|
Chris@0
|
35 $this->value = $value;
|
Chris@0
|
36 }
|
Chris@0
|
37
|
Chris@0
|
38 /**
|
Chris@0
|
39 * {@inheritdoc}
|
Chris@0
|
40 */
|
Chris@0
|
41 public function scoreArgument($argument)
|
Chris@0
|
42 {
|
Chris@0
|
43 if (!$argument instanceof \Traversable && !is_array($argument)) {
|
Chris@0
|
44 return false;
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 $scores = array();
|
Chris@0
|
48 foreach ($argument as $key => $argumentEntry) {
|
Chris@0
|
49 $scores[] = $this->value->scoreArgument($argumentEntry);
|
Chris@0
|
50 }
|
Chris@0
|
51
|
Chris@0
|
52 if (empty($scores) || in_array(false, $scores, true)) {
|
Chris@0
|
53 return false;
|
Chris@0
|
54 }
|
Chris@0
|
55
|
Chris@0
|
56 return array_sum($scores) / count($scores);
|
Chris@0
|
57 }
|
Chris@0
|
58
|
Chris@0
|
59 /**
|
Chris@0
|
60 * {@inheritdoc}
|
Chris@0
|
61 */
|
Chris@0
|
62 public function isLast()
|
Chris@0
|
63 {
|
Chris@0
|
64 return false;
|
Chris@0
|
65 }
|
Chris@0
|
66
|
Chris@0
|
67 /**
|
Chris@0
|
68 * {@inheritdoc}
|
Chris@0
|
69 */
|
Chris@0
|
70 public function __toString()
|
Chris@0
|
71 {
|
Chris@0
|
72 return sprintf('[%s, ..., %s]', $this->value, $this->value);
|
Chris@0
|
73 }
|
Chris@0
|
74
|
Chris@0
|
75 /**
|
Chris@0
|
76 * @return TokenInterface
|
Chris@0
|
77 */
|
Chris@0
|
78 public function getValue()
|
Chris@0
|
79 {
|
Chris@0
|
80 return $this->value;
|
Chris@0
|
81 }
|
Chris@0
|
82 }
|