Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 15 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
BengaliCurrencyFormat | |
0.00% |
0 / 15 |
|
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 1 |
formatNumber | |
0.00% |
0 / 15 |
|
0.00% |
0 / 1 |
12 |
1 | <?php |
2 | |
3 | namespace ProofreadPage\Pagination\CustomNumberFormatters; |
4 | |
5 | use Language; |
6 | use NumberFormatter; |
7 | |
8 | class BengaliCurrencyFormat { |
9 | private const NUMBER_TRANSLATION = [ |
10 | '৲', |
11 | '৴৹', |
12 | '৵৹', |
13 | '৶৹', |
14 | '৷৹', |
15 | '৷৴৹', |
16 | '৷৵৹', |
17 | '৷৶৹', |
18 | '৷৷৹', |
19 | '৷৷৴৹', |
20 | '৷৷৵৹', |
21 | '৷৷৶৹', |
22 | '৸৹', |
23 | '৸৴৹', |
24 | '৸৵৹', |
25 | '৸৶৹', |
26 | ]; |
27 | |
28 | /** |
29 | * Convert a number to Bengali currency format |
30 | * @param Language $lang |
31 | * @param int $number |
32 | * @return string |
33 | */ |
34 | public function formatNumber( Language $lang, int $number ): string { |
35 | $numStr = ''; |
36 | if ( $number <= 0 ) { |
37 | return '০'; |
38 | } |
39 | |
40 | $locale = $lang->getCode(); |
41 | $locale .= '-u-nu-beng'; |
42 | |
43 | $firstDigit = $number % 16; |
44 | $number = (int)( $number / 16 ); |
45 | $numStr = self::NUMBER_TRANSLATION[$firstDigit]; |
46 | |
47 | $formatter = new NumberFormatter( $locale, NumberFormatter::DEFAULT_STYLE ); |
48 | $formatter->setSymbol( NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '' ); |
49 | |
50 | while ( $number > 0 ) { |
51 | $digit = $number % 16; |
52 | $numStr = $formatter->format( $digit ) . $numStr; |
53 | $number = (int)( $number / 16 ); |
54 | } |
55 | |
56 | return $numStr; |
57 | } |
58 | } |