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: * 例えば空要素を '<element>' と '<element />' のどちらで出力するかといった制御を行います.
34: * このインタフェースは {@link DefaultBuilder} で使用するためのものです.
35: * このインタフェース (またはこのインタフェースを実装した各具象クラス)
36: * をエンドユーザーが直接使用する機会はありません.
37: */
38: interface Renderer
39: {
40: /**
41: * 開始タグをマークアップします.
42: * '<tagName attr="attr">' 形式の文字列を返します.
43: *
44: * @param Element $element 出力対象の要素
45: * @return string 開始タグ
46: */
47: public function formatStartTag(Element $element);
48:
49: /**
50: * 終了タグをマークアップします.
51: * '</tagName>' 形式の文字列を返します.
52: *
53: * @param Element $element 出力対象の要素
54: * @return string 終了タグ
55: */
56: public function formatEndTag(Element $element);
57:
58: /**
59: * 空要素タグをマークアップします.
60: * SGML の場合は開始タグと同じ形式となります.
61: * XML の場合は '<tagName />' のように, タグが '/>' で終了します.
62: *
63: * @param Element $element 出力対象の要素
64: * @return string 空要素タグ
65: */
66: public function formatEmptyTag(Element $element);
67: }
68: