Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
BengaliCurrencyFormat
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
 formatNumber
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace ProofreadPage\Pagination\CustomNumberFormatters;
4
5use Language;
6use NumberFormatter;
7
8class 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}