| Code Coverage
| Classes and Traits | Functions and Methods | Lines
Total |  | 100.00% | 1 / 1 |  | 100.00% | 3 / 3 | CRAP |  | 100.00% | 32 / 32
LoggerPatternConverter |  | 100.00% | 1 / 1 |  | 100.00% | 4 / 4 | 12 |  | 100.00% | 32 / 32
__construct(LoggerFormattingInfo $formattingInfo = null, $option = null) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 4 / 4
activateOptions() |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 1 / 1
convert(LoggerLoggingEvent $event) |  | 100.00% | 1 / 1 | 1 |  |  |
format(&$sbuf, $event) |  | 100.00% | 1 / 1 | 9 |  | 100.00% | 27 / 27

1 | <?php
2 | /**
3 | * Licensed to the Apache Software Foundation (ASF) under one or more
4 | * contributor license agreements. See the NOTICE file distributed with
5 | * this work for additional information regarding copyright ownership.
6 | * The ASF licenses this file to You under the Apache License, Version 2.0
7 | * (the "License"); you may not use this file except in compliance with
8 | * the License. You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | *
18 | * @package log4php
19 | */
20 |
21 | /**
22 | * LoggerPatternConverter is an abstract class that provides the formatting
23 | * functionality that derived classes need.
24 | *
25 | * <p>Conversion specifiers in a conversion patterns are parsed to
26 | * individual PatternConverters. Each of which is responsible for
27 | * converting a logging event in a converter specific manner.</p>
28 | *
29 | * @version $Revision: 1326626 $
30 | * @package log4php
31 | * @subpackage helpers
32 | * @since 0.3
33 | */
34 | abstract class LoggerPatternConverter {
35 |
36 | /**
37 | * Next converter in the converter chain.
38 | * @var LoggerPatternConverter
39 | */
40 | public $next = null;
41 |
42 | /**
43 | * Formatting information, parsed from pattern modifiers.
44 | * @var LoggerFormattingInfo
45 | */
46 | protected $formattingInfo;
47 |
48 | /**
49 | * Converter-specific formatting options.
50 | * @var array
51 | */
52 | protected $option;
53 |
54 | /**
55 | * Constructor
56 | * @param LoggerFormattingInfo $formattingInfo
57 | * @param array $option
58 | */
59 | public function __construct(LoggerFormattingInfo $formattingInfo = null, $option = null) {
60 | $this->formattingInfo = $formattingInfo;
61 | $this->option = $option;
62 | $this->activateOptions();
63 | }
64 |
65 | /**
66 | * Called in constructor. Converters which need to process the options
67 | * can override this method.
68 | */
69 | public function activateOptions() { }
70 |
71 | /**
72 | * Converts the logging event to the desired format. Derived pattern
73 | * converters must implement this method.
74 | *
75 | * @param LoggerLoggingEvent $event
76 | */
77 | abstract public function convert(LoggerLoggingEvent $event);
78 |
79 | /**
80 | * Converts the event and formats it according to setting in the
81 | * Formatting information object.
82 | *
83 | * @param string &$sbuf string buffer to write to
84 | * @param LoggerLoggingEvent $event Event to be formatted.
85 | */
86 | public function format(&$sbuf, $event) {
87 | $string = $this->convert($event);
88 |
89 | if (!isset($this->formattingInfo)) {
90 | $sbuf .= $string;
91 | return;
92 | }
93 |
94 | $fi = $this->formattingInfo;
95 |
96 | // Empty string
97 | if($string === '' || is_null($string)) {
98 | if($fi->min > 0) {
99 | $sbuf .= str_repeat(' ', $fi->min);
100 | }
101 | return;
102 | }
103 |
104 | $len = strlen($string);
105 |
106 | // Trim the string if needed
107 | if($len > $fi->max) {
108 | if ($fi->trimLeft) {
109 | $sbuf .= substr($string, $len - $fi->max, $fi->max);
110 | } else {
111 | $sbuf .= substr($string , 0, $fi->max);
112 | }
113 | }
114 |
115 | // Add padding if needed
116 | else if($len < $fi->min) {
117 | if($fi->padLeft) {
118 | $sbuf .= str_repeat(' ', $fi->min - $len);
119 | $sbuf .= $string;
120 | } else {
121 | $sbuf .= $string;
122 | $sbuf .= str_repeat(' ', $fi->min - $len);
123 | }
124 | }
125 |
126 | // No action needed
127 | else {
128 | $sbuf .= $string;
129 | }
130 | }
131 | }