From 903ae8a581fac1e6917fc3e31d2ad8fb91df80c3 Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Thu, 12 Jul 2012 11:21:01 +0000 Subject: standardize the use of unix eol; use svn properties to enforce native eol --- framework/I18N/TNumberFormat.php | 502 +++++++++++++++++++-------------------- 1 file changed, 251 insertions(+), 251 deletions(-) (limited to 'framework/I18N/TNumberFormat.php') diff --git a/framework/I18N/TNumberFormat.php b/framework/I18N/TNumberFormat.php index 30a1e638..1c2502be 100644 --- a/framework/I18N/TNumberFormat.php +++ b/framework/I18N/TNumberFormat.php @@ -1,251 +1,251 @@ - - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2012 PradoSoft - * @license http://www.pradosoft.com/license/ - * @version $Id$ - * @package System.I18N - */ - -/** - * Get the NumberFormat class. - */ -Prado::using('System.I18N.core.NumberFormat'); - -/** - * Get the parent control class. - */ -Prado::using('System.I18N.TI18NControl'); - -/** - * To format numbers in locale sensitive manner use - * - * - * - * - * Numbers can be formatted as currency, percentage, decimal or scientific - * numbers by specifying the Type attribute. The known types are - * "currency", "percentage", "decimal" and "scientific". - * - * If someone from US want to see sales figures from a store in - * Germany (say using the EURO currency), formatted using the german - * currency, you would need to use the attribute Culture="de_DE" to get - * the currency right, e.g. 100,00. The decimal and grouping separator is - * then also from the de_DE locale. This may lead to some confusion because - * people from US know the "," as thousand separator. Therefore a "Currency" - * attribute is available, so that the output from the following example - * results in 100.00. - * - * - * - * - * Namespace: System.I18N - * - * Properties - * - Value, number, - *
Gets or sets the number to format. The tag content is used as Value - * if the Value property is not specified. - * - Type, string, - *
Gets or sets the formatting type. The valid types are - * 'decimal', 'currency', 'percentage' and 'scientific'. - * - Currency, string, - *
Gets or sets the currency symbol for the currency format. - * The default is 'USD' if the Currency property is not specified. - * - Pattern, string, - *
Gets or sets the custom number formatting pattern. - * - DefaultText, string, - *
Gets or sets the default text. If Value is not set, DefaultText will be - * shown instead of the default currency Value/Pattern. - * - * @author Xiang Wei Zhuo - * @version v1.0, last update on Sat Dec 11 17:49:56 EST 2004 - * @package System.I18N - */ -class TNumberFormat extends TI18NControl implements IDataRenderer -{ - /** - * Default NumberFormat, set to the application culture. - * @var NumberFormat - */ - protected static $formatter; - - /** - * Get the number formatting pattern. - * @return string format pattern. - */ - public function getPattern() - { - return $this->getViewState('Pattern',''); - } - - /** - * Set the number format pattern. - * @param string format pattern. - */ - public function setPattern($pattern) - { - $this->setViewState('Pattern',$pattern,''); - } - - /** - * Get the numberic value for this control. - * @return string number - */ - public function getValue() - { - return $this->getViewState('Value',''); - } - - /** - * Set the numberic value for this control. - * @param string the number value - */ - public function setValue($value) - { - $this->setViewState('Value',$value,''); - } - - /** - * Get the default text value for this control. - * @return string default text value - */ - public function getDefaultText() - { - return $this->getViewState('DefaultText',''); - } - - /** - * Set the default text value for this control. - * @param string default text value - */ - public function setDefaultText($value) - { - $this->setViewState('DefaultText',$value,''); - } - - /** - * Get the numberic value for this control. - * This method is required by {@link IDataRenderer}. - * It is the same as {@link getValue()}. - * @return string number - * @see getValue - * @since 3.1.2 - */ - public function getData() - { - return $this->getValue(); - } - - /** - * Set the numberic value for this control. - * This method is required by {@link IDataRenderer}. - * It is the same as {@link setValue()}. - * @param string the number value - * @see setValue - * @since 3.1.2 - */ - public function setData($value) - { - $this->setValue($value); - } - - /** - * Get the formatting type for this control. - * @return string formatting type. - */ - public function getType() - { - return $this->getViewState('Type','d'); - } - - /** - * Set the formatting type for this control. - * @param string formatting type, either "decimal", "currency","percentage" - * or "scientific" - * @throws TPropertyTypeInvalidException - */ - public function setType($type) - { - $type = strtolower($type); - - switch($type) - { - case 'decimal': - $this->setViewState('Type','d',''); break; - case 'currency': - $this->setViewState('Type','c',''); break; - case 'percentage': - $this->setViewState('Type','p',''); break; - case 'scientific': - $this->setViewState('Type','e',''); break; - default: - throw new TInvalidDataValueException('numberformat_type_invalid',$type); - } - - } - - /** - * @return string 3 letter currency code. Defaults to 'USD'. - */ - public function getCurrency() - { - return $this->getViewState('Currency','USD'); - } - - /** - * Set the 3-letter ISO 4217 code. For example, the code - * "USD" represents the US Dollar and "EUR" represents the Euro currency. - * @param string currency code. - */ - public function setCurrency($currency) - { - $this->setViewState('Currency', $currency,''); - } - - /** - * Formats the localized number, be it currency or decimal, or percentage. - * If the culture is not specified, the default application - * culture will be used. - * @return string formatted number - */ - protected function getFormattedValue() - { - $value = $this->getValue(); - $defaultText = $this->getDefaultText(); - if(empty($value) && !empty($defaultText)) - return $this->getDefaultText(); - - $app = $this->getApplication()->getGlobalization(); - //initialized the default class wide formatter - if(self::$formatter===null) - self::$formatter = new NumberFormat($app->getCulture()); - - $pattern = strlen($this->getPattern()) > 0 - ? $this->getPattern() : $this->getType(); - - $culture = $this->getCulture(); - //return the specific cultural formatted number - if(!empty($culture) && $app->getCulture() != $culture) - { - $formatter = new NumberFormat($culture); - return $formatter->format($this->getValue(),$pattern, - $this->getCurrency(), - $this->getCharset()); - } - - //return the application wide culture formatted number. - return self::$formatter->format($this->getValue(),$pattern, - $this->getCurrency(), - $this->getCharset()); - } - - public function render($writer) - { - $writer->write($this->getFormattedValue()); - } -} - -?> + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2012 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.I18N + */ + +/** + * Get the NumberFormat class. + */ +Prado::using('System.I18N.core.NumberFormat'); + +/** + * Get the parent control class. + */ +Prado::using('System.I18N.TI18NControl'); + +/** + * To format numbers in locale sensitive manner use + * + * + * + * + * Numbers can be formatted as currency, percentage, decimal or scientific + * numbers by specifying the Type attribute. The known types are + * "currency", "percentage", "decimal" and "scientific". + * + * If someone from US want to see sales figures from a store in + * Germany (say using the EURO currency), formatted using the german + * currency, you would need to use the attribute Culture="de_DE" to get + * the currency right, e.g. 100,00. The decimal and grouping separator is + * then also from the de_DE locale. This may lead to some confusion because + * people from US know the "," as thousand separator. Therefore a "Currency" + * attribute is available, so that the output from the following example + * results in 100.00. + * + * + * + * + * Namespace: System.I18N + * + * Properties + * - Value, number, + *
Gets or sets the number to format. The tag content is used as Value + * if the Value property is not specified. + * - Type, string, + *
Gets or sets the formatting type. The valid types are + * 'decimal', 'currency', 'percentage' and 'scientific'. + * - Currency, string, + *
Gets or sets the currency symbol for the currency format. + * The default is 'USD' if the Currency property is not specified. + * - Pattern, string, + *
Gets or sets the custom number formatting pattern. + * - DefaultText, string, + *
Gets or sets the default text. If Value is not set, DefaultText will be + * shown instead of the default currency Value/Pattern. + * + * @author Xiang Wei Zhuo + * @version v1.0, last update on Sat Dec 11 17:49:56 EST 2004 + * @package System.I18N + */ +class TNumberFormat extends TI18NControl implements IDataRenderer +{ + /** + * Default NumberFormat, set to the application culture. + * @var NumberFormat + */ + protected static $formatter; + + /** + * Get the number formatting pattern. + * @return string format pattern. + */ + public function getPattern() + { + return $this->getViewState('Pattern',''); + } + + /** + * Set the number format pattern. + * @param string format pattern. + */ + public function setPattern($pattern) + { + $this->setViewState('Pattern',$pattern,''); + } + + /** + * Get the numberic value for this control. + * @return string number + */ + public function getValue() + { + return $this->getViewState('Value',''); + } + + /** + * Set the numberic value for this control. + * @param string the number value + */ + public function setValue($value) + { + $this->setViewState('Value',$value,''); + } + + /** + * Get the default text value for this control. + * @return string default text value + */ + public function getDefaultText() + { + return $this->getViewState('DefaultText',''); + } + + /** + * Set the default text value for this control. + * @param string default text value + */ + public function setDefaultText($value) + { + $this->setViewState('DefaultText',$value,''); + } + + /** + * Get the numberic value for this control. + * This method is required by {@link IDataRenderer}. + * It is the same as {@link getValue()}. + * @return string number + * @see getValue + * @since 3.1.2 + */ + public function getData() + { + return $this->getValue(); + } + + /** + * Set the numberic value for this control. + * This method is required by {@link IDataRenderer}. + * It is the same as {@link setValue()}. + * @param string the number value + * @see setValue + * @since 3.1.2 + */ + public function setData($value) + { + $this->setValue($value); + } + + /** + * Get the formatting type for this control. + * @return string formatting type. + */ + public function getType() + { + return $this->getViewState('Type','d'); + } + + /** + * Set the formatting type for this control. + * @param string formatting type, either "decimal", "currency","percentage" + * or "scientific" + * @throws TPropertyTypeInvalidException + */ + public function setType($type) + { + $type = strtolower($type); + + switch($type) + { + case 'decimal': + $this->setViewState('Type','d',''); break; + case 'currency': + $this->setViewState('Type','c',''); break; + case 'percentage': + $this->setViewState('Type','p',''); break; + case 'scientific': + $this->setViewState('Type','e',''); break; + default: + throw new TInvalidDataValueException('numberformat_type_invalid',$type); + } + + } + + /** + * @return string 3 letter currency code. Defaults to 'USD'. + */ + public function getCurrency() + { + return $this->getViewState('Currency','USD'); + } + + /** + * Set the 3-letter ISO 4217 code. For example, the code + * "USD" represents the US Dollar and "EUR" represents the Euro currency. + * @param string currency code. + */ + public function setCurrency($currency) + { + $this->setViewState('Currency', $currency,''); + } + + /** + * Formats the localized number, be it currency or decimal, or percentage. + * If the culture is not specified, the default application + * culture will be used. + * @return string formatted number + */ + protected function getFormattedValue() + { + $value = $this->getValue(); + $defaultText = $this->getDefaultText(); + if(empty($value) && !empty($defaultText)) + return $this->getDefaultText(); + + $app = $this->getApplication()->getGlobalization(); + //initialized the default class wide formatter + if(self::$formatter===null) + self::$formatter = new NumberFormat($app->getCulture()); + + $pattern = strlen($this->getPattern()) > 0 + ? $this->getPattern() : $this->getType(); + + $culture = $this->getCulture(); + //return the specific cultural formatted number + if(!empty($culture) && $app->getCulture() != $culture) + { + $formatter = new NumberFormat($culture); + return $formatter->format($this->getValue(),$pattern, + $this->getCurrency(), + $this->getCharset()); + } + + //return the application wide culture formatted number. + return self::$formatter->format($this->getValue(),$pattern, + $this->getCurrency(), + $this->getCharset()); + } + + public function render($writer) + { + $writer->write($this->getFormattedValue()); + } +} + +?> -- cgit v1.2.3