Overview

Namespaces

  • Peach
    • DF
    • DT
    • Http
      • Body
      • Header
    • Markup
    • Util

Classes

  • Peach\DF\Base64Codec
  • Peach\DF\CodecChain
  • Peach\DF\JsonCodec
  • Peach\DF\SerializationCodec
  • Peach\DF\Utf8Codec
  • Peach\DT\AbstractTime
  • Peach\DT\Clock
  • Peach\DT\Date
  • Peach\DT\Datetime
  • Peach\DT\DefaultClock
  • Peach\DT\FixedClock
  • Peach\DT\FormatWrapper
  • Peach\DT\HttpDateFormat
  • Peach\DT\OffsetClock
  • Peach\DT\ShiftFormat
  • Peach\DT\SimpleFormat
  • Peach\DT\TimeEquator
  • Peach\DT\Timestamp
  • Peach\DT\TimeWrapper
  • Peach\DT\UnixTimeFormat
  • Peach\DT\Util
  • Peach\DT\W3cDatetimeFormat
  • Peach\Http\Body
  • Peach\Http\Body\CodecRenderer
  • Peach\Http\Body\StringRenderer
  • Peach\Http\DefaultEndpoint
  • Peach\Http\Header\CookieItem
  • Peach\Http\Header\CookieOptions
  • Peach\Http\Header\HttpDate
  • Peach\Http\Header\NoField
  • Peach\Http\Header\QualityValues
  • Peach\Http\Header\Raw
  • Peach\Http\Header\SetCookie
  • Peach\Http\Header\Status
  • Peach\Http\Request
  • Peach\Http\Response
  • Peach\Http\Util
  • Peach\Markup\AbstractHelper
  • Peach\Markup\AbstractRenderer
  • Peach\Markup\BaseHelper
  • Peach\Markup\BreakControlWrapper
  • Peach\Markup\Builder
  • Peach\Markup\Code
  • Peach\Markup\Comment
  • Peach\Markup\ContainerElement
  • Peach\Markup\Context
  • Peach\Markup\DebugBuilder
  • Peach\Markup\DebugContext
  • Peach\Markup\DefaultBreakControl
  • Peach\Markup\DefaultBuilder
  • Peach\Markup\DefaultContext
  • Peach\Markup\Element
  • Peach\Markup\EmptyElement
  • Peach\Markup\HelperObject
  • Peach\Markup\HtmlHelper
  • Peach\Markup\Indent
  • Peach\Markup\MinimalBreakControl
  • Peach\Markup\NameBreakControl
  • Peach\Markup\NameValidator
  • Peach\Markup\NodeList
  • Peach\Markup\None
  • Peach\Markup\SgmlRenderer
  • Peach\Markup\Text
  • Peach\Markup\XmlRenderer
  • Peach\Util\AbstractMapEntry
  • Peach\Util\ArrayMap
  • Peach\Util\ArrayMapEntry
  • Peach\Util\Arrays
  • Peach\Util\DefaultComparator
  • Peach\Util\DefaultEquator
  • Peach\Util\HashMap
  • Peach\Util\HashMapEntry
  • Peach\Util\Strings
  • Peach\Util\Values

Interfaces

  • Peach\DF\Codec
  • Peach\DT\Format
  • Peach\DT\Time
  • Peach\Http\BodyRenderer
  • Peach\Http\Endpoint
  • Peach\Http\HeaderField
  • Peach\Http\MultiHeaderField
  • Peach\Http\SingleHeaderField
  • Peach\Markup\BreakControl
  • Peach\Markup\Component
  • Peach\Markup\Container
  • Peach\Markup\Helper
  • Peach\Markup\Node
  • Peach\Markup\Renderer
  • Peach\Util\Comparable
  • Peach\Util\Comparator
  • Peach\Util\Equator
  • Peach\Util\Map
  • Peach\Util\MapEntry
  • Overview
  • Namespace
  • Class
  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: class Indent
 34: {
 35:     /**
 36:      * 半角スペース 4 個です.
 37:      * @var string
 38:      */
 39:     const SPACE4 = "    ";
 40:     
 41:     /**
 42:      * タブ文字です.
 43:      * @var string
 44:      */
 45:     const TAB    = "\t";
 46:     
 47:     /**
 48:      * 改行コード CR です.
 49:      * @var string
 50:      */
 51:     const CR     = "\r";
 52:     
 53:     /**
 54:      * 改行コード LF です.
 55:      * @var string
 56:      */
 57:     const LF     = "\n";
 58:     
 59:     /**
 60:      * 改行コード CRLF です.
 61:      * @var string
 62:      */
 63:     const CRLF   = "\r\n";
 64:     
 65:     /**
 66:      * 現在のインデントレベルです.
 67:      * @var int
 68:      */
 69:     private $level;
 70:     
 71:     /**
 72:      * インデント一つ分の文字列です.
 73:      * @var string
 74:      */
 75:     private $unit;
 76:     
 77:     /**
 78:      * 改行コードです.
 79:      * @var string
 80:      */
 81:     private $breakCode;
 82:     
 83:     /**
 84:      * 新しい Indent オブジェクトを構築します.
 85:      * 
 86:      * @param int    $level     インデントレベルの初期値です. デフォルトは 0 です. レベルは 0 未満でも構いません.
 87:      * @param string $unit      インデント一つ分の文字列です. デフォルトは半角スペース 4 個です.
 88:      * @param string $breakCode 改行コードです. デフォルトは CRLF です.
 89:      */
 90:     public function __construct($level = 0, $unit = self::SPACE4, $breakCode = self::CRLF)
 91:     {
 92:         $this->level     = $level;
 93:         $this->unit      = $unit;
 94:         $this->breakCode = $breakCode;
 95:     }
 96:     
 97:     /**
 98:      * インデント文字列を構築します.
 99:      * @param  int $level
100:      * @return string
101:      */
102:     private function handleIndent($level)
103:     {
104:         return ($level < 1) ? "" : $this->handleIndent($level - 1) . $this->unit;
105:     }
106:     
107:     /**
108:      * 現在のインデントレベルを返します.
109:      * @return int インデントレベル
110:      */
111:     public function getLevel()
112:     {
113:         return $this->level;
114:     }
115:     
116:     /**
117:      * インデント一つ分の文字列です.
118:      * @return string インデント一つ分の文字列
119:      */
120:     public function getUnit()
121:     {
122:         return $this->unit;
123:     }
124:     
125:     /**
126:      * 現在のレベルでインデントします.
127:      * インデントレベルが 0 以下の場合は空文字列を返します.
128:      * @return string 現在のレベルのインデント文字列
129:      */
130:     public function indent()
131:     {
132:         return $this->handleIndent($this->level);
133:     }
134:     
135:     /**
136:      * 改行コードを返します.
137:      * @return string 改行コード ("\n" や "\r\n" など)
138:      */
139:     public function breakCode()
140:     {
141:         return $this->breakCode;
142:     }
143:     
144:     /**
145:      * インデントレベルを一つ上げます.
146:      * 改行コードを返します.
147:      * @return string 改行コード
148:      */
149:     public function stepUp()
150:     {
151:         $this->level ++;
152:         return $this->breakCode;
153:     }
154:     
155:     /**
156:      * インデントレベルを一つ下げます.
157:      * 新しいレベルのインデント文字列を返します.
158:      * 
159:      * @return string 現在の一つ下のレベルのインデント文字列
160:      */
161:     public function stepDown()
162:     {
163:         $this->level --;
164:         return $this->indent($this->level);
165:     }
166: }
167: 
PEACH2 API documentation generated by ApiGen