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 {

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

}

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

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

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


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

Expand All @@ -79,18 +79,18 @@ public function precision($number, $precision = 3) {
* @return string Human readable size
* @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) {
case $size < 1024:
return __dn('cake', '%d Byte', '%d Bytes', $size, $size);
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:
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:
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:
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
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::toPercentage
*/
public function toPercentage($number, $precision = 2) {
return $this->precision($number, $precision) . '%';
public static function toPercentage($number, $precision = 2) {
return self::precision($number, $precision) . '%';
}

/**
Expand All @@ -115,7 +115,7 @@ public function toPercentage($number, $precision = 2) {
* @return string formatted number
* @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;
if (is_int($options)) {
$places = $options;
Expand Down Expand Up @@ -172,7 +172,7 @@ public function format($number, $options = false) {
* @return string Number formatted as a 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;

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'];

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

if ($number < 0 ) {
if ($options['negative'] == '()') {
Expand Down Expand Up @@ -247,7 +247,7 @@ public function currency($number, $currency = 'USD', $options = array()) {
* @see NumberHelper::currency()
* @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;
}

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
*/
function __construct(View $View, $settings = array()) {
$settings = Set::merge(array('engine' => 'CakeNumber'), $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
*/
function __call($method, $params) {
public function __call($method, $params) {
return call_user_func_array(array($this->_CakeNumber, $method), $params);
}

Expand Down

0 comments on commit 9624c27

Please sign in to comment.