RootHandler   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 13
dl 0
loc 55
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A startElement() 0 9 2
1
<?php
2
3
/**
4
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15
 *
16
 * This software consists of voluntary contributions made by many individuals
17
 * and is licensed under the LGPL. For more information please see
18
 * <http://phing.info>.
19
 */
20
21
namespace Phing\Parser;
22
23
/**
24
 * Root filter class for a phing buildfile.
25
 *
26
 * The root filter is called by the parser first. This is where the phing
27
 * specific parsing starts. RootHandler decides what to do next.
28
 *
29
 * @author    Andreas Aderhold <[email protected]>
30
 * @copyright 2001,2002 THYRELL. All rights reserved
31
 */
32
class RootHandler extends AbstractHandler
33
{
34
    /**
35
     * The phing project configurator object.
36
     */
37
    private $configurator;
38
39
    /**
40
     * @var XmlContext
41
     */
42
    private $context;
43
44
    /**
45
     * Constructs a new RootHandler.
46
     *
47
     * The root filter is required so the parser knows what to do. It's
48
     * called by the ExpatParser that is instatiated in ProjectConfigurator.
49
     *
50
     * It receives the expat parse object ref and a reference to the
51
     * configurator
52
     *
53
     * @param AbstractSAXParser   $parser       the ExpatParser object
54
     * @param ProjectConfigurator $configurator the ProjectConfigurator object
55
     */
56
    public function __construct(AbstractSAXParser $parser, ProjectConfigurator $configurator, XmlContext $context)
57
    {
58
        $this->configurator = $configurator;
59
        $this->context = $context;
60
61
        parent::__construct($parser, $this);
62
    }
63
64
    /**
65
     * Kick off a custom action for a start element tag.
66
     *
67
     * The root element of our buildfile is the &lt;project&gt; element. The
68
     * root filter handles this element if it occurs, creates ProjectHandler
69
     * to handle any nested tags & attributes of the &lt;project&gt; tag,
70
     * and calls init.
71
     *
72
     * @param string $tag   The xml tagname
73
     * @param array  $attrs The attributes of the tag
74
     *
75
     * @throws ExpatParseException if the first element within our build file
76
     *                             is not the &gt;project&lt; element
77
     */
78
    public function startElement($tag, $attrs)
79
    {
80
        if ('project' === $tag) {
81
            $ph = new ProjectHandler($this->parser, $this, $this->configurator, $this->context);
82
            $ph->init($tag, $attrs);
83
        } else {
84
            throw new ExpatParseException(
85
                "Unexpected tag <{$tag}> in top-level of build file.",
86
                $this->parser->getLocation()
0 ignored issues
show
Bug introduced by
The method getLocation() does not exist on Phing\Parser\AbstractSAXParser. Since it exists in all sub-types, consider adding an abstract or default implementation to Phing\Parser\AbstractSAXParser. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

86
                $this->parser->/** @scrutinizer ignore-call */ 
87
                               getLocation()
Loading history...
87
            );
88
        }
89
    }
90
}
91