Completed
Push — master ( 861647...12535e )
by arto
01:54
created

Arguments::getNumberOfValues()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/**
3
 * @author: stev leibelt <[email protected]>
4
 * @since: 2015-04-16
5
 */
6
7
namespace Net\Bazzline\Component\Cli\Arguments;
8
9
class Arguments
10
{
11
    /** @var array */
12
    private $arguments;
13
14
    /** @var array */
15
    private $flags;
16
17
    /** @var array */
18
    private $lists;
19
20
    /** @var Parser */
21
    private $parser;
22
23
    /** @var array */
24
    private $values;
25
26
    /**
27
     * @param null|array $argv
28
     * @param boolean $removeFirstArgument
29
     */
30
    public function __construct($argv = null, $removeFirstArgument = true)
31
    {
32
        $this->parser = new Parser();
33
34
        if (is_array($argv)) {
35
            $this->parseArguments($argv, $removeFirstArgument);
36
        } else {
37
            $this->setArgumentsFromParser($this->parser);
38
        }
39
    }
40
41
    /**
42
     * @return array
43
     */
44
    public function getArguments()
45
    {
46
        return $this->arguments;
47
    }
48
49
    /**
50
     * @return array
51
     */
52
    public function getFlags()
53
    {
54
        return $this->flags;
55
    }
56
57
    /**
58
     * @param string $name
59
     * @return null|array
60
     */
61
    public function getList($name)
62
    {
63
        return (isset($this->lists[$name]))
64
            ? $this->lists[$name]
65
            : null;
66
    }
67
68
    /**
69
     * @return int
70
     */
71
    public function getNumberOfArguments()
72
    {
73
        return (count($this->arguments));
74
    }
75
76
    /**
77
     * @return int
78
     */
79
    public function getNumberOfFlags()
80
    {
81
        return (count($this->flags));
82
    }
83
84
    /**
85
     * @return int
86
     */
87
    public function getNumberOfLists()
88
    {
89
        return (count($this->lists));
90
    }
91
92
    /**
93
     * @return int
94
     */
95
    public function getNumberOfValues()
96
    {
97
        return (count($this->values));
98
    }
99
100
    /**
101
     * @return array
102
     */
103
    public function getLists()
104
    {
105
        return $this->lists;
106
    }
107
108
    /**
109
     * @return array
110
     */
111
    public function getValues()
112
    {
113
        return $this->values;
114
    }
115
116
    /**
117
     * @return bool
118
     */
119
    public function hasArguments()
120
    {
121
        return (!empty($this->arguments));
122
    }
123
124
    /**
125
     * @param string $name
126
     * @return bool
127
     */
128
    public function hasFlag($name)
129
    {
130
        return (in_array($name, $this->flags));
131
    }
132
133
    /**
134
     * @return bool
135
     */
136
    public function hasFlags()
137
    {
138
        return (!empty($this->flags));
139
    }
140
141
    /**
142
     * @param string $name
143
     * @return bool
144
     */
145
    public function hasList($name)
146
    {
147
        return (isset($this->lists[$name]));
148
    }
149
150
    /**
151
     * @return bool
152
     */
153
    public function hasLists()
154
    {
155
        return (!empty($this->lists));
156
    }
157
158
    /**
159
     * @return bool
160
     */
161
    public function hasValues()
162
    {
163
        return (!empty($this->values));
164
    }
165
166
    /**
167
     * @param array $argv
168
     * @param boolean $removeFirstArgument
169
     * @return $this
170
     */
171
    public function parseArguments(array $argv, $removeFirstArgument = true)
172
    {
173
        if ($removeFirstArgument) {
174
            array_shift($argv);
175
        }
176
177
        $this->arguments = $argv;
178
        $this->parser->parse($this->arguments);
179
        $this->setArgumentsFromParser($this->parser);
180
181
        return $this;
182
    }
183
184
    /**
185
     * @return array
186
     */
187
    public function convertToArray()
188
    {
189
        return $this->getArguments();
190
    }
191
192
    /**
193
     * @return string
194
     */
195
    public function convertToString()
196
    {
197
        return implode(' ', $this->convertToArray());
198
    }
199
200
    /**
201
     * @return string
202
     */
203
    public function __toString()
204
    {
205
        return $this->convertToString();
206
    }
207
208
    /**
209
     * @param Parser $parser
210
     */
211
    private function setArgumentsFromParser(Parser $parser)
212
    {
213
        $this->flags    = $parser->getFlags();
214
        $this->lists    = $parser->getLists();
215
        $this->values   = $parser->getValues();
216
    }
217
}