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: * 既存の BreakControl の振る舞いを拡張するためのラッパークラスです.
32: * このクラスは Decorator パターンで設計されています.
33: * このクラスを継承して新しい BreakControl クラスを作り,
34: * breaks() をオーバーライドして利用してください.
35: */
36: class BreakControlWrapper implements BreakControl
37: {
38: /**
39: * ラップ対象の BreakControl
40: * @var BreakControl
41: */
42: private $original;
43:
44: /**
45: * 指定された BreakControl をラップする BreakControlWrapper を構築します.
46: * 引数を省略した場合は DefaultBreakControl をラップします.
47: *
48: * @param BreakControl $original 未指定の場合は DefaultBreakControl
49: */
50: public function __construct(BreakControl $original = null)
51: {
52: if (!isset($original)) {
53: $original = DefaultBreakControl::getInstance();
54: }
55: $this->original = $original;
56: }
57:
58: /**
59: * ラップ対象の BreakControl オブジェクトを返します.
60: * @return BreakControl このオブジェクトがラップしている BreakControl
61: */
62: public function getOriginal()
63: {
64: return $this->original;
65: }
66:
67: /**
68: * この実装はオリジナルの breaks() をそのまま返します.
69: *
70: * @param ContainerElement $node 判定対象の要素
71: * @return bool ラップしているオブジェクトの breaks() の結果
72: */
73: public function breaks(ContainerElement $node)
74: {
75: return $this->original->breaks($node);
76: }
77: }
78: