[TASK] Streamline phpdoc annotations in EXT:fluid
[Packages/TYPO3.CMS.git] / typo3 / sysext / fluid / Classes / ViewHelpers / Format / CurrencyViewHelper.php
index 54263d0..7861543 100644 (file)
@@ -14,8 +14,8 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Format;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
+use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
 
 /**
@@ -31,7 +31,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
  * </output>
  *
  * <code title="All parameters">
- * <f:format.currency currencySign="$" decimalSeparator="." thousandsSeparator="," prependCurrency="TRUE" separateCurrency="FALSE" decimals="2">54321</f:format.currency>
+ * <f:format.currency currencySign="$" decimalSeparator="." thousandsSeparator="," prependCurrency="true" separateCurrency="false" decimals="2">54321</f:format.currency>
  * </code>
  * <output>
  * $54,321.00
@@ -45,7 +45,12 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
  * (depending on the value of {someNumber})
  * </output>
  *
- * @api
+ * <code title="use dash for decimals without value">
+ * <f:format.currency useDash="true">123.00</f:format.currency>
+ * </code>
+ * <output>
+ * 123,-
+ * </output>
  */
 class CurrencyViewHelper extends AbstractViewHelper
 {
@@ -65,13 +70,13 @@ class CurrencyViewHelper extends AbstractViewHelper
      */
     public function initializeArguments()
     {
-        parent::initializeArguments();
         $this->registerArgument('currencySign', 'string', 'The currency sign, eg $ or €.', false, '');
         $this->registerArgument('decimalSeparator', 'string', 'The separator for the decimal point.', false, ',');
         $this->registerArgument('thousandsSeparator', 'string', 'The thousands separator.', false, '.');
         $this->registerArgument('prependCurrency', 'bool', 'Select if the currency sign should be prepended', false, false);
         $this->registerArgument('separateCurrency', 'bool', 'Separate the currency sign from the number by a single space, defaults to true due to backwards compatibility', false, true);
         $this->registerArgument('decimals', 'int', 'Set decimals places.', false, 2);
+        $this->registerArgument('useDash', 'bool', 'Use the dash instead of decimal 00', false, false);
     }
 
     /**
@@ -91,14 +96,20 @@ class CurrencyViewHelper extends AbstractViewHelper
         $prependCurrency = $arguments['prependCurrency'];
         $separateCurrency = $arguments['separateCurrency'];
         $decimals = $arguments['decimals'];
+        $useDash = $arguments['useDash'];
 
         $floatToFormat = $renderChildrenClosure();
         if (empty($floatToFormat)) {
             $floatToFormat = 0.0;
         } else {
-            $floatToFormat = floatval($floatToFormat);
+            $floatToFormat = (float)$floatToFormat;
         }
         $output = number_format($floatToFormat, $decimals, $decimalSeparator, $thousandsSeparator);
+
+        if ($useDash && $floatToFormat === floor($floatToFormat)) {
+            $output = explode($decimalSeparator, $output)[0] . $decimalSeparator . '—';
+        }
+
         if ($currencySign !== '') {
             $currencySeparator = $separateCurrency ? ' ' : '';
             if ($prependCurrency === true) {