Completed
Push — master ( e0cc8e...b29470 )
by f
01:20
created

MoneySpeller::spell()   C

Complexity

Conditions 8
Paths 17

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
nc 17
dl 0
loc 23
c 0
b 0
f 0
cc 8
eloc 16
nop 3
rs 6.1403
1
<?php
2
namespace morphos\Russian;
3
4
use morphos\Gender;
5
use morphos\CurrenciesHelper;
6
7
class MoneySpeller extends \morphos\MoneySpeller
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::FRANC => ['франк', Gender::MALE, 'сантим', Gender::MALE],
17
		self::YUAN => ['юань', Gender::MALE, 'цзяо', Gender::NEUTER],
18
		self::KRONA => ['крона', Gender::FEMALE, 'эре', Gender::NEUTER],
19
		self::PESO => ['песо', Gender::NEUTER, 'сентаво', Gender::NEUTER],
20
		self::WON => ['вон', Gender::MALE, 'чон', Gender::MALE],
21
		self::LIRA => ['лира', Gender::FEMALE, 'куруш', Gender::MALE],
22
		self::RUBLE => ['рубль', Gender::MALE, 'копейка', Gender::FEMALE],
23
		self::RUPEE => ['рупия', Gender::FEMALE, 'пайка', Gender::FEMALE],
24
		self::REAL => ['реал', Gender::MALE, 'сентаво', Gender::NEUTER],
25
		self::RAND => ['рэнд', Gender::MALE, 'цент', Gender::MALE],
26
		self::HRYVNIA => ['гривна', Gender::FEMALE, 'копейка', Gender::FEMALE],
27
	];
28
29
	public static function spell($value, $currency, $format = self::NORMAL_FORMAT) {
30
		$currency = self::canonizeCurrency($currency);
31
32
		$integer = floor($value);
33
		$fractional = floor(($value * 100) % 100);
34
35
		switch ($format) {
36
			case self::SHORT_FORMAT:
37
				return $integer.' '.Plurality::pluralize(static::$labels[$currency][0], $integer).' '.$fractional.' '.Plurality::pluralize(static::$labels[$currency][2], $fractional);
38
39
			case self::NORMAL_FORMAT:
40
			case self::CLARIFICATION_FORMAT:
41
			case self::DUPLICATION_FORMAT:
42
43
				$integer_speelled = CardinalNumeral::getCase($integer, Cases::IMENIT, static::$labels[$currency][1]);
44
				$fractional_speelled = CardinalNumeral::getCase($fractional, Cases::IMENIT, static::$labels[$currency][3]);
45
46
				if ($format == self::CLARIFICATION_FORMAT)
47
					return $integer.' ('.$integer_speelled.') '.Plurality::pluralize(static::$labels[$currency][0], $integer).' '.$fractional.' ('.$fractional_speelled.') '.Plurality::pluralize(static::$labels[$currency][2], $fractional);
48
				else
49
					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);
50
		}
51
	}
52
}
53