Completed
Push — master ( 58a943...583fed )
by f
01:21
created

MoneyFormatter   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 50
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 4

1 Method

Rating   Name   Duplication   Size   Complexity  
C format() 0 23 8
1
<?php
2
namespace morphos\Russian;
3
4
use morphos\Gender;
5
use morphos\CurrenciesHelper;
6
7
class MoneyFormatter extends \morphos\MoneyFormatter
8
{
9
	use CurrenciesHelper;
10
11
	protected static $labels = [
12
		self::DOLLAR => ['доллар', Gender::MALE, 'цент', Gender::MALE],
13
		self::EURO => ['евро', Gender::NEUTER, 'цент', Gender::MALE],
14
		self::YEN => ['иена', Gender::FEMALE, 'сен', Gender::MALE],
15
		self::POUND => ['фунт', Gender::MALE, 'пенни', Gender::NEUTER],
16
		self::AUSTRALIAN_DOLLAR => ['доллар', Gender::MALE, 'цент', Gender::MALE],
17
		self::CANADIAN_DOLLAR => ['доллар', Gender::MALE, 'цент', Gender::MALE],
18
		self::FRANC => ['франк', Gender::MALE, 'сантим', Gender::MALE],
19
		self::YUAN => ['юань', Gender::MALE, 'цзяо', Gender::NEUTER],
20
		self::KRONA => ['крона', Gender::FEMALE, 'эре', Gender::NEUTER],
21
		self::ZELAND_DOLLAR => ['доллар', Gender::MALE, 'цент', Gender::MALE],
22
		self::PESO => ['песо', Gender::NEUTER, 'сентаво', Gender::NEUTER],
23
		self::SINGAPORE_DOLLAR => ['доллар', Gender::MALE, 'цент', Gender::MALE],
24
		self::HONG_KONG_DOLLAR => ['доллар', Gender::MALE, 'цент', Gender::MALE],
25
		self::WON => ['вон', Gender::MALE, 'чон', Gender::MALE],
26
		self::LIRA => ['лира', Gender::FEMALE, 'куруш', Gender::MALE],
27
		self::RUBLE => ['рубль', Gender::MALE, 'копейка', Gender::FEMALE],
28
		self::RUPEE => ['рупия', Gender::FEMALE, 'пайка', Gender::FEMALE],
29
		self::REAL => ['реал', Gender::MALE, 'сентаво', Gender::NEUTER],
30
		self::RAND => ['рэнд', Gender::MALE, 'цент', Gender::MALE],
31
	];
32
33
	public static function format($value, $currency, $format = self::NORMAL_FORMAT) {
34
		$currency = self::canonizeCurrency($currency);
35
36
		$integer = floor($value);
37
		$fractional = floor(($value * 100) % 100);
38
39
		switch ($format) {
40
			case self::SHORT_FORMAT:
41
				return $integer.' '.Plurality::pluralize(static::$labels[$currency][0], $integer).' '.$fractional.' '.Plurality::pluralize(static::$labels[$currency][2], $fractional);
42
43
			case self::NORMAL_FORMAT:
44
			case self::CLARIFICATION_FORMAT:
45
			case self::DUPLICATION_FORMAT:
46
47
				$integer_speelled = CardinalNumeral::getCase($integer, Cases::IMENIT, static::$labels[$currency][1]);
48
				$fractional_speelled = CardinalNumeral::getCase($fractional, Cases::IMENIT, static::$labels[$currency][3]);
49
50
				if ($format == self::CLARIFICATION_FORMAT)
51
					return $integer.' ('.$integer_speelled.') '.Plurality::pluralize(static::$labels[$currency][0], $integer).' '.$fractional.' ('.$fractional_speelled.') '.Plurality::pluralize(static::$labels[$currency][2], $fractional);
52
				else
53
					return $integer_speelled.($format == self::DUPLICATION_FORMAT ? ' ('.$integer.')' : null).' '.Plurality::pluralize(static::$labels[$currency][0], $integer).' '.$fractional_speelled.($format == self::DUPLICATION_FORMAT ? ' ('.$fractional.')' : null).' '.Plurality::pluralize(static::$labels[$currency][2], $fractional);
54
		}
55
	}
56
}
57