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
use Sabberworm\CSS\Value\CSSString;
8
 
9
/**
10
 * Class representing an `@charset` rule.
11
 *
12
 * The following restrictions apply:
13
 * - May not be found in any CSSList other than the Document.
14
 * - May only appear at the very top of a Document’s contents.
15
 * - Must not appear more than once.
16
 */
17
class Charset implements AtRule
18
{
19
    /**
20
     * @var CSSString
21
     */
22
    private $oCharset;
23
 
24
    /**
25
     * @var int
26
     */
27
    protected $iLineNo;
28
 
29
    /**
30
     * @var array<array-key, Comment>
31
     */
32
    protected $aComments;
33
 
34
    /**
35
     * @param CSSString $oCharset
36
     * @param int $iLineNo
37
     */
38
    public function __construct(CSSString $oCharset, $iLineNo = 0)
39
    {
40
        $this->oCharset = $oCharset;
41
        $this->iLineNo = $iLineNo;
42
        $this->aComments = [];
43
    }
44
 
45
    /**
46
     * @return int
47
     */
48
    public function getLineNo()
49
    {
50
        return $this->iLineNo;
51
    }
52
 
53
    /**
54
     * @param string|CSSString $oCharset
55
     *
56
     * @return void
57
     */
58
    public function setCharset($sCharset)
59
    {
60
        $sCharset = $sCharset instanceof CSSString ? $sCharset : new CSSString($sCharset);
61
        $this->oCharset = $sCharset;
62
    }
63
 
64
    /**
65
     * @return string
66
     */
67
    public function getCharset()
68
    {
69
        return $this->oCharset->getString();
70
    }
71
 
72
    /**
73
     * @return string
74
     */
75
    public function __toString()
76
    {
77
        return $this->render(new OutputFormat());
78
    }
79
 
80
    /**
81
     * @param OutputFormat|null $oOutputFormat
82
     *
83
     * @return string
84
     */
85
    public function render($oOutputFormat)
86
    {
87
        return "{$oOutputFormat->comments($this)}@charset {$this->oCharset->render($oOutputFormat)};";
88
    }
89
 
90
    /**
91
     * @return string
92
     */
93
    public function atRuleName()
94
    {
95
        return 'charset';
96
    }
97
 
98
    /**
99
     * @return string
100
     */
101
    public function atRuleArgs()
102
    {
103
        return $this->oCharset;
104
    }
105
 
106
    /**
107
     * @param array<array-key, Comment> $aComments
108
     *
109
     * @return void
110
     */
111
    public function addComments(array $aComments)
112
    {
113
        $this->aComments = array_merge($this->aComments, $aComments);
114
    }
115
 
116
    /**
117
     * @return array<array-key, Comment>
118
     */
119
    public function getComments()
120
    {
121
        return $this->aComments;
122
    }
123
 
124
    /**
125
     * @param array<array-key, Comment> $aComments
126
     *
127
     * @return void
128
     */
129
    public function setComments(array $aComments)
130
    {
131
        $this->aComments = $aComments;
132
    }
133
}