1: <?php
2:
3: /*****************************************************************************************
4: * X2Engine Open Source Edition is a customer relationship management program developed by
5: * X2Engine, Inc. Copyright (C) 2011-2016 X2Engine Inc.
6: *
7: * This program is free software; you can redistribute it and/or modify it under
8: * the terms of the GNU Affero General Public License version 3 as published by the
9: * Free Software Foundation with the addition of the following permission added
10: * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11: * IN WHICH THE COPYRIGHT IS OWNED BY X2ENGINE, X2ENGINE DISCLAIMS THE WARRANTY
12: * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13: *
14: * This program is distributed in the hope that it will be useful, but WITHOUT
15: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16: * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
17: * details.
18: *
19: * You should have received a copy of the GNU Affero General Public License along with
20: * this program; if not, see http://www.gnu.org/licenses or write to the Free
21: * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22: * 02110-1301 USA.
23: *
24: * You can contact X2Engine, Inc. P.O. Box 66752, Scotts Valley,
25: * California 95067, USA. or at email address contact@x2engine.com.
26: *
27: * The interactive user interfaces in modified source and object code versions
28: * of this program must display Appropriate Legal Notices, as required under
29: * Section 5 of the GNU Affero General Public License version 3.
30: *
31: * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32: * these Appropriate Legal Notices must retain the display of the "Powered by
33: * X2Engine" logo. If the display of the logo is not reasonably feasible for
34: * technical reasons, the Appropriate Legal Notices must display the words
35: * "Powered by X2Engine".
36: *****************************************************************************************/
37:
38: /**
39: * Class for formatting pretty console messages.
40: *
41: * Formatting methods are intended to be chained, i.e.
42: *
43: * $formatter->bgColor($backgroundColor)->bold()->color($textColor)->format();
44: *
45: * Only "format" returns the message with the escape sequences. Note also,
46: *
47: * @author Demitri Morgan <demitri@x2engine.com>
48: * @package application.commands
49: */
50: class ConsoleFormatterUtil {
51:
52: public $msg;
53:
54: /**
55: * ANSI escape sequence codes
56: * @var type
57: */
58: private $_seq = array(
59: 'clr' => '0',
60: 'bold' => '1',
61: 'black' => '30',
62: 'red' => '31',
63: 'green' => '32',
64: 'yellow' => '33',
65: 'blue' => '34',
66: 'purple' => '35',
67: 'cyan' => '36',
68: 'white' => '37',
69: 'bg_black' => '40',
70: 'bg_red' => '41',
71: 'bg_magenta' => '45',
72: 'bg_yellow' => '43',
73: 'bg_green' => '42',
74: 'bg_blue' => '44',
75: 'bg_cyan' => '46',
76: 'bg_light_gray' => '47',
77: );
78:
79: public function __construct($msg){
80: $this->msg = $msg;
81: }
82:
83: public function bgColor($color) {
84: $color = isset($this->_seq["bg_$color"]) ? $this->_seq["bg_$color"] : $color;
85: $this->msg = "\033[".$color.'m'.$this->msg;
86: return $this;
87: }
88:
89: /**
90: * Returns a message in boldface.
91: * @param type $msg
92: */
93: public function bold(){
94: $this->msg = "\033[".$this->_seq['bold'].'m'.$this->msg;
95: return $this;
96: }
97:
98: /**
99: * Returns a message with color sequences applied.
100: *
101: * @param type $msg
102: * @param type $color
103: * @return type
104: */
105: public function color($color){
106: $color = isset($this->_seq[$color]) ? $this->_seq[$color] : $color;
107: $this->msg = "\033[".$color.'m'.$this->msg;
108: return $this;
109: }
110:
111: public function format(){
112: return $this->msg."\033[".$this->_seq['clr'].'m';
113: }
114: }
115:
116: ?>
117: