Skip to content

Commit

Permalink
changing methods in CakeNumber class to static
Browse files Browse the repository at this point in the history
  • Loading branch information
rchavik committed Feb 14, 2012
1 parent abd6d22 commit 9624c27
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 22 deletions.
22 changes: 14 additions & 8 deletions lib/Cake/Test/Case/View/Helper/NumberHelperTest.php
Expand Up @@ -25,12 +25,18 @@
*/ */
class NumberHelperTestObject extends NumberHelper { class NumberHelperTestObject extends NumberHelper {


public function attach(CakeNumber $cakeNumber) { public function attach(CakeNumberMock $cakeNumber) {
$this->_CakeNumber = $cakeNumber; $this->_CakeNumber = $cakeNumber;
} }


} }


/**
* CakeNumberMock class
*/
class CakeNumberMock {
}

/** /**
* NumberHelperTest class * NumberHelperTest class
* *
Expand All @@ -45,10 +51,7 @@ class NumberHelperTest extends CakeTestCase {
*/ */
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
$view = $this->getMock('View', array(), array(), '', false); $this->View = new View(null);
$this->CakeNumber = $this->getMock('CakeNumber');
$this->Number = new NumberHelperTestObject($view);
$this->Number->attach($this->CakeNumber);
} }


/** /**
Expand All @@ -58,7 +61,7 @@ public function setUp() {
*/ */
public function tearDown() { public function tearDown() {
parent::tearDown(); parent::tearDown();
unset($this->Number); unset($this->View);
} }




Expand All @@ -70,9 +73,12 @@ public function testNumberHelperProxyMethodCalls() {
'precision', 'toReadableSize', 'toPercentage', 'format', 'precision', 'toReadableSize', 'toPercentage', 'format',
'currency', 'addFormat', 'currency', 'addFormat',
); );
$CakeNumber = $this->getMock('CakeNumberMock', $methods);
$Number = new NumberHelperTestObject($this->View, array('engine' => 'CakeNumberMock'));
$Number->attach($CakeNumber);
foreach ($methods as $method) { foreach ($methods as $method) {
$this->CakeNumber->expects($this->at(0))->method($method); $CakeNumber->expects($this->at(0))->method($method);
$this->Number->{$method}('who', 'what', 'when', 'where', 'how'); $Number->{$method}('who', 'what', 'when', 'where', 'how');
} }
} }


Expand Down
24 changes: 12 additions & 12 deletions lib/Cake/Utility/CakeNumber.php
Expand Up @@ -68,7 +68,7 @@ class CakeNumber {
* @return float Formatted float. * @return float Formatted float.
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::precision * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::precision
*/ */
public function precision($number, $precision = 3) { public static function precision($number, $precision = 3) {
return sprintf("%01.{$precision}f", $number); return sprintf("%01.{$precision}f", $number);
} }


Expand All @@ -79,18 +79,18 @@ public function precision($number, $precision = 3) {
* @return string Human readable size * @return string Human readable size
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toReadableSize * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toReadableSize
*/ */
public function toReadableSize($size) { public static function toReadableSize($size) {
switch (true) { switch (true) {
case $size < 1024: case $size < 1024:
return __dn('cake', '%d Byte', '%d Bytes', $size, $size); return __dn('cake', '%d Byte', '%d Bytes', $size, $size);
case round($size / 1024) < 1024: case round($size / 1024) < 1024:
return __d('cake', '%d KB', $this->precision($size / 1024, 0)); return __d('cake', '%d KB', self::precision($size / 1024, 0));
case round($size / 1024 / 1024, 2) < 1024: case round($size / 1024 / 1024, 2) < 1024:
return __d('cake', '%.2f MB', $this->precision($size / 1024 / 1024, 2)); return __d('cake', '%.2f MB', self::precision($size / 1024 / 1024, 2));
case round($size / 1024 / 1024 / 1024, 2) < 1024: case round($size / 1024 / 1024 / 1024, 2) < 1024:
return __d('cake', '%.2f GB', $this->precision($size / 1024 / 1024 / 1024, 2)); return __d('cake', '%.2f GB', self::precision($size / 1024 / 1024 / 1024, 2));
default: default:
return __d('cake', '%.2f TB', $this->precision($size / 1024 / 1024 / 1024 / 1024, 2)); return __d('cake', '%.2f TB', self::precision($size / 1024 / 1024 / 1024 / 1024, 2));
} }
} }


Expand All @@ -102,8 +102,8 @@ public function toReadableSize($size) {
* @return string Percentage string * @return string Percentage string
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toPercentage * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toPercentage
*/ */
public function toPercentage($number, $precision = 2) { public static function toPercentage($number, $precision = 2) {
return $this->precision($number, $precision) . '%'; return self::precision($number, $precision) . '%';
} }


/** /**
Expand All @@ -115,7 +115,7 @@ public function toPercentage($number, $precision = 2) {
* @return string formatted number * @return string formatted number
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::format * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::format
*/ */
public function format($number, $options = false) { public static function format($number, $options = false) {
$places = 0; $places = 0;
if (is_int($options)) { if (is_int($options)) {
$places = $options; $places = $options;
Expand Down Expand Up @@ -172,7 +172,7 @@ public function format($number, $options = false) {
* @return string Number formatted as a currency. * @return string Number formatted as a currency.
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::currency * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::currency
*/ */
public function currency($number, $currency = 'USD', $options = array()) { public static function currency($number, $currency = 'USD', $options = array()) {
$default = self::$_currencyDefaults; $default = self::$_currencyDefaults;


if (isset(self::$_currencies[$currency])) { if (isset(self::$_currencies[$currency])) {
Expand Down Expand Up @@ -210,7 +210,7 @@ public function currency($number, $currency = 'USD', $options = array()) {
$options[$position] = $options[$symbolKey.'Symbol']; $options[$position] = $options[$symbolKey.'Symbol'];


$abs = abs($number); $abs = abs($number);
$result = $this->format($abs, $options); $result = self::format($abs, $options);


if ($number < 0 ) { if ($number < 0 ) {
if ($options['negative'] == '()') { if ($options['negative'] == '()') {
Expand Down Expand Up @@ -247,7 +247,7 @@ public function currency($number, $currency = 'USD', $options = array()) {
* @see NumberHelper::currency() * @see NumberHelper::currency()
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::addFormat * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::addFormat
*/ */
public function addFormat($formatName, $options) { public static function addFormat($formatName, $options) {
self::$_currencies[$formatName] = $options + self::$_currencyDefaults; self::$_currencies[$formatName] = $options + self::$_currencyDefaults;
} }


Expand Down
11 changes: 9 additions & 2 deletions lib/Cake/View/Helper/NumberHelper.php
Expand Up @@ -43,14 +43,21 @@ class NumberHelper extends AppHelper {
* @param array $settings Configuration settings for the helper * @param array $settings Configuration settings for the helper
*/ */
function __construct(View $View, $settings = array()) { function __construct(View $View, $settings = array()) {
$settings = Set::merge(array('engine' => 'CakeNumber'), $settings);
parent::__construct($View, $settings); parent::__construct($View, $settings);
$this->_CakeNumber = new CakeNumber(); $engineClass = $settings['engine'];
App::uses($engineClass, 'Utility');
if (class_exists($engineClass)) {
$this->_CakeNumber = new $engineClass($settings);
} else {
throw new CakeException(__d('cake_dev', '%s could not be found', $engineClass));
}
} }


/** /**
* Call methods from CakeNumber utility class * Call methods from CakeNumber utility class
*/ */
function __call($method, $params) { public function __call($method, $params) {
return call_user_func_array(array($this->_CakeNumber, $method), $params); return call_user_func_array(array($this->_CakeNumber, $method), $params);
} }


Expand Down

0 comments on commit 9624c27

Please sign in to comment.