Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
<?php
2
 
3
namespace Sabberworm\CSS\Property;
4
 
5
use Sabberworm\CSS\Comment\Comment;
6
use Sabberworm\CSS\OutputFormat;
7
 
8
/**
9
 * `CSSNamespace` represents an `@namespace` rule.
10
 */
11
class CSSNamespace implements AtRule
12
{
13
    /**
14
     * @var string
15
     */
16
    private $mUrl;
17
 
18
    /**
19
     * @var string
20
     */
21
    private $sPrefix;
22
 
23
    /**
24
     * @var int
25
     */
26
    private $iLineNo;
27
 
28
    /**
29
     * @var array<array-key, Comment>
30
     */
31
    protected $aComments;
32
 
33
    /**
34
     * @param string $mUrl
35
     * @param string|null $sPrefix
36
     * @param int $iLineNo
37
     */
38
    public function __construct($mUrl, $sPrefix = null, $iLineNo = 0)
39
    {
40
        $this->mUrl = $mUrl;
41
        $this->sPrefix = $sPrefix;
42
        $this->iLineNo = $iLineNo;
43
        $this->aComments = [];
44
    }
45
 
46
    /**
47
     * @return int
48
     */
49
    public function getLineNo()
50
    {
51
        return $this->iLineNo;
52
    }
53
 
54
    /**
55
     * @return string
56
     */
57
    public function __toString()
58
    {
59
        return $this->render(new OutputFormat());
60
    }
61
 
62
    /**
63
     * @param OutputFormat|null $oOutputFormat
64
     *
65
     * @return string
66
     */
67
    public function render($oOutputFormat)
68
    {
69
        return '@namespace ' . ($this->sPrefix === null ? '' : $this->sPrefix . ' ')
70
            . $this->mUrl->render($oOutputFormat) . ';';
71
    }
72
 
73
    /**
74
     * @return string
75
     */
76
    public function getUrl()
77
    {
78
        return $this->mUrl;
79
    }
80
 
81
    /**
82
     * @return string|null
83
     */
84
    public function getPrefix()
85
    {
86
        return $this->sPrefix;
87
    }
88
 
89
    /**
90
     * @param string $mUrl
91
     *
92
     * @return void
93
     */
94
    public function setUrl($mUrl)
95
    {
96
        $this->mUrl = $mUrl;
97
    }
98
 
99
    /**
100
     * @param string $sPrefix
101
     *
102
     * @return void
103
     */
104
    public function setPrefix($sPrefix)
105
    {
106
        $this->sPrefix = $sPrefix;
107
    }
108
 
109
    /**
110
     * @return string
111
     */
112
    public function atRuleName()
113
    {
114
        return 'namespace';
115
    }
116
 
117
    /**
118
     * @return array<int, string>
119
     */
120
    public function atRuleArgs()
121
    {
122
        $aResult = [$this->mUrl];
123
        if ($this->sPrefix) {
124
            array_unshift($aResult, $this->sPrefix);
125
        }
126
        return $aResult;
127
    }
128
 
129
    /**
130
     * @param array<array-key, Comment> $aComments
131
     *
132
     * @return void
133
     */
134
    public function addComments(array $aComments)
135
    {
136
        $this->aComments = array_merge($this->aComments, $aComments);
137
    }
138
 
139
    /**
140
     * @return array<array-key, Comment>
141
     */
142
    public function getComments()
143
    {
144
        return $this->aComments;
145
    }
146
 
147
    /**
148
     * @param array<array-key, Comment> $aComments
149
     *
150
     * @return void
151
     */
152
    public function setComments(array $aComments)
153
    {
154
        $this->aComments = $aComments;
155
    }
156
}