Skip to content

Commit

Permalink
add format to Decimal type
Browse files Browse the repository at this point in the history
add format to Decimal type

fix codesniffer issue

extend the unit tests to cover new 'format'-setting

add format to Decimal type

add format to Decimal type

fix codesniffer issue

extend the unit tests to cover new 'format'-setting

fix test
  • Loading branch information
saggi-dw committed May 13, 2024
1 parent 63b9cad commit 42620ec
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
20 changes: 17 additions & 3 deletions _test/types/DecimalTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public function test_validate_success($value, $min, $max, $decpoint = '.')
public function valueProvider()
{
return [
// $value, $expect, $roundto, $decpoint, $thousands, $trimzeros, $prefix='', $postfix='', $engineering = false
// $value, $expect, $roundto, $decpoint, $thousands, $trimzeros, $prefix='', $postfix='', $engineering = false, $format = ''
['5000', '5 000,00', '2', ',', ' ', false],
['5000', '5 000', '2', ',', ' ', true],
['5000', '5 000', '0', ',', ' ', false],
Expand Down Expand Up @@ -149,6 +149,18 @@ public function valueProvider()
['1e15', '1000' . "\xE2\x80\xAF" . 'T', '-1', ',', ' ', true, '', '', true],
['1e-21', '0.001' . "\xE2\x80\xAF" . 'a', '-1', ',', ' ', true, '', '', true],

//format string
['5000', '5 000', '-1', '.', ' ', true, '', '', false, ''],
['5000', '5 000.00', '2', '.', ' ', false, '', '', false, '%s'],
['1.7', '1.70', '-1', '.', ' ', true, '', '', false, '%01.2f'],
['1.7', '1.70' , '-1', '.', ' ', true, '', '', false, '%01.2F'],
['1.7', '0001' , '-1', '.', ' ', true, '', '', false, "%'.04d"],
['15', '1111' , '-1', '.', ' ', true, '', '', false, '%04b'],
['362525200', '3.625e+8' , '-1', '.', ' ', true, '', '', false, '%.3e'],
['362525200', '3.625E+8' , '-1', '.', ' ', true, '', '', false, '%.3E'],
['1', '1' , '-1', '.', ' ', true, '', '', false, '%u'],
['-1', '18446744073709551615' , '-1', '.', ' ', true, '', '', false, '%u'],

];
}

Expand All @@ -158,7 +170,8 @@ public function valueProvider()
public function test_renderValue(
$value, $expect, $roundto, $decpoint,
$thousands, $trimzeros,
$prefix = '', $postfix = '', $engineering = false
$prefix = '', $postfix = '', $engineering = false,
$format = ''
)
{
$decimal = new Decimal([
Expand All @@ -168,7 +181,8 @@ public function test_renderValue(
'trimzeros' => $trimzeros,
'prefix' => $prefix,
'postfix' => $postfix,
'engineering' => $engineering
'engineering' => $engineering,
'format' => $format
]);
$R = new \Doku_Renderer_xhtml();
$R->doc = '';
Expand Down
5 changes: 5 additions & 0 deletions types/Decimal.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class Decimal extends AbstractMultiBaseType
'prefix' => '',
'postfix' => '',
'engineering' => false,
'format' => '',
];

/**
Expand All @@ -37,6 +38,10 @@ class Decimal extends AbstractMultiBaseType
*/
public function renderValue($value, \Doku_Renderer $R, $mode)
{
if (preg_match("/^%(?:['+-:.]?\D?\d*\.?\d*)?[bdeEfFu]$/", $this->config['format'])) {
$R->cdata($this->config['prefix'] . sprintf($this->config['format'], $value) . $this->config['postfix']);
return true;
}

if ($this->config['engineering']) {
$unitsh = ['', 'k', 'M', 'G', 'T'];
Expand Down

0 comments on commit 42620ec

Please sign in to comment.