1: <?php
2: /*
3: * Copyright (c) 2014 @trashtoy
4: * https://github.com/trashtoy/
5: *
6: * Permission is hereby granted, free of charge, to any person obtaining a copy of
7: * this software and associated documentation files (the "Software"), to deal in
8: * the Software without restriction, including without limitation the rights to use,
9: * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
10: * Software, and to permit persons to whom the Software is furnished to do so,
11: * subject to the following conditions:
12: *
13: * The above copyright notice and this permission notice shall be included in all
14: * copies or substantial portions of the Software.
15: *
16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
18: * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19: * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20: * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21: * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22: */
23: /**
24: * PHP class file.
25: * @auhtor trashtoy
26: * @since 2.0.0
27: */
28: namespace Peach\Markup;
29:
30: /**
31: * 要素内に含まれるテキストをあらわすノードです.
32: * このノードに '&' などの特殊文字が含まれていた場合,
33: * レンダリングされる際に適切な文字参照に自動変換されます.
34: */
35: class Text implements Node
36: {
37: /**
38: * テキストの内容です.
39: *
40: * @var string
41: */
42: private $text;
43:
44: /**
45: * 指定された内容のテキストノードを構築します.
46: * @param string $text テキストの内容
47: */
48: public function __construct($text)
49: {
50: $this->text = $text;
51: }
52:
53: /**
54: * このテキストノードの内容を返します.
55: *
56: * @return string
57: */
58: public function getText()
59: {
60: return $this->text;
61: }
62:
63: /**
64: * 指定された Context にこのノードを処理させます.
65: * {@link Context::handleText()} を呼び出します.
66: * @param Context $context
67: */
68: public function accept(Context $context)
69: {
70: $context->handleText($this);
71: }
72:
73: /**
74: * このテキストノードが表現する文字列を返します.
75: * @return string
76: */
77: public function __toString()
78: {
79: return $this->text;
80: }
81:
82: /**
83: * このオブジェクトを {@link Container::appendNode()} に指定した場合,
84: * このオブジェクト自身が追加されます.
85: *
86: * @return NodeList このオブジェクトを 1 つだけ含んだ NodeList
87: */
88: public function getAppendee()
89: {
90: return new NodeList($this);
91: }
92: }
93: