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: use Peach\Util\Values;
30:
31: /**
32: * 整形済のテキストデータをあらわすノードです.
33: * 例えば以下のような箇所で使用されることを想定しています.
34: *
35: * - HTML の style 要素, script 要素の中身
36: * - あらかじめ文字列として出力されている HTML コード片
37: * - DOCTYPE 宣言, CDATA セクションなど, このモジュールがサポートしていない XML 構文
38: */
39: class Code implements Node
40: {
41: /**
42: * 整形済テキスト
43: * @var string
44: */
45: private $text;
46:
47: /**
48: * 引数の文字列を整形済テキストとする Code オブジェクトを生成します.
49: * @param string $text 整形済テキスト
50: */
51: public function __construct($text)
52: {
53: $this->text = Values::stringValue($text);
54: }
55:
56: /**
57: * 整形済テキストの内容を返します.
58: *
59: * @return string 整形済テキスト
60: */
61: public function getText()
62: {
63: return $this->text;
64: }
65:
66: /**
67: * 指定された Context にこのノードを処理させます.
68: * {@link Context::handleCode()} を呼び出します.
69: *
70: * @param Context $context このノードを処理する Context
71: */
72: public function accept(Context $context)
73: {
74: $context->handleCode($this);
75: }
76:
77: /**
78: * このオブジェクトの文字列表現です.
79: * {@link Code::getText()} と同じ結果を返します.
80: * @return string 整形済テキストの内容
81: */
82: public function __toString()
83: {
84: return $this->text;
85: }
86:
87: /**
88: * このオブジェクトを {@link Container::appendNode()} に指定した場合,
89: * このオブジェクト自身が追加されます.
90: *
91: * @return NodeList このオブジェクトを 1 つだけ含んだ NodeList
92: */
93: public function getAppendee()
94: {
95: return new NodeList($this);
96: }
97: }
98: