Skip to content

Commit

Permalink
Merge pull request #13 from nodkz/master
Browse files Browse the repository at this point in the history
1) Предложный падеж  2) Добавлена поддержка казахстанского тенге
  • Loading branch information
julik committed Oct 22, 2014
2 parents 30315bd + f1afed8 commit 9687e5f
Show file tree
Hide file tree
Showing 5 changed files with 215 additions and 7 deletions.
4 changes: 4 additions & 0 deletions History.txt
@@ -1,3 +1,7 @@
=== 2.2.4

* Добавлена поддержка казахстанского тенге - nodkz

=== 2.2.3

* Более строгое форматирование долей (https://github.com/julik/ru_propisju/pull/12)
Expand Down
2 changes: 2 additions & 0 deletions README.rdoc
Expand Up @@ -15,6 +15,8 @@
RuPropisju.rublej(123.78) #=> "сто двадцать три рубля 78 копеек"
RuPropisju.propisju_shtuk(212.40, 2, ["сволочь", "сволочи", "сволочей"]) #=> "двести двенадцать целых четыре десятых сволочи"

'Продается в ' + RuPropisju.propisju_shtuk(147, 1, ["городе", "городах", "городах"], :ru_in) #=> "Продается в ста сорока семи городах"

== REQUIREMENTS:

* Прямые руки
Expand Down
97 changes: 95 additions & 2 deletions lib/ru_propisju.rb
Expand Up @@ -6,7 +6,7 @@
# RuPropisju.rublej(123) # "сто двадцать три рубля"
module RuPropisju

VERSION = '2.2.3'
VERSION = '2.2.4'

# http://www.xe.com/symbols.php
# (лица, приближенные форексам и всяким там валютам и курсам)
Expand All @@ -17,6 +17,7 @@ module RuPropisju
"usd" => :dollarov,
"uah" => :griven,
"eur" => :evro,
"kzt" => :tenge,
}

SUPPORTED_CURRENCIES = CURRENCIES.keys.join ','
Expand Down Expand Up @@ -70,6 +71,8 @@ module RuPropisju
:rub_fraction => ['копейка', 'копейки', 'копеек'],
:uah_integral => ["гривна", "гривны", "гривен"],
:uah_fraction => ['копейка', 'копейки', 'копеек'],
:kzt_integral => ["тенге", "тенге", "тенге"],
:kzt_fraction => ['тиын', 'тиына', 'тиынов'],
:eur_integral => ["евро", "евро", "евро"],
# по опыту моей прошлой работы в банке
# центами называют дробную часть доллара
Expand All @@ -78,6 +81,64 @@ module RuPropisju
:usd_integral => ["доллар", "доллара", "долларов"],
:usd_fraction => ['цент', 'цента', 'центов'],
},
'ru_in' => { # Предложный падеж, например в 2 городах, поэтому ru_in - in == 'в' (если нужен будет творительный падеж - делайте ru_from aka из города from == 'из')
0 => "",
'0' => "нуле",
:thousands => ["тысяче", "тысячах", "тысячах"],
:millions => ["миллионе", "миллионах", "миллионах"],
:billions => ["миллиарде", "миллиардах", "миллиардах"],
100 => "ста",
200 => "двухстах",
300 => "трёхстах",
400 => "четырёхстах",
500 => "пятистах",
600 => "шестистах",
700 => "семистах",
800 => "восьмистах",
900 => "девятистах",

10 => "десяти",
11 => "одиннадцати",
12 => "двенадцати",
13 => "тринадцати",
14 => "четырнадцати",
15 => "пятнадцати",
16 => "шестнадцати",
17 => "семнадцати",
18 => "восемнадцати",
19 => "девятнадцати",
20 => "двадцати",
30 => "тридцати",
40 => "сорока",
50 => "пятьдесяти",
60 => "шестьдесяти",
70 => "семьдесяти",
80 => "восемьдесяти",
90 => "девяноста",
# единицы, местами - c учетом рода
1 => {1 => "одном", 2 => 'одной', 3 => 'одном'},
2 => {1 => "двух", 2 => 'двух', 3 => 'двух'},
3 => "трёх",
4 => "четырёх",
5 => "пяти",
6 => "шести",
7 => "семи",
8 => "восьми",
9 => "девяти",
:rub_integral => ["рубле", "рублях", "рублях"],
:rub_fraction => ['копейке', 'копейках', 'копейках'],
:uah_integral => ["гривне", "гривнах", "гривнах"],
:uah_fraction => ['копейке', 'копейках', 'копейках'],
:kzt_integral => ["тенге", "тенге", "тенге"],
:kzt_fraction => ['тиыне', 'тиынах', 'тиынах'],
:eur_integral => ["евро", "евро", "евро"],
# по опыту моей прошлой работы в банке
# центами называют дробную часть доллара
# а дробную часть евро называют евроцентом
:eur_fraction => ["центе", "центах", "центах"],
:usd_integral => ["долларе", "долларах", "долларах"],
:usd_fraction => ['центе', 'центах', 'центах'],
},
'ua' => {
0 => "",
'0' => "нуль",
Expand Down Expand Up @@ -126,6 +187,8 @@ module RuPropisju
:rub_fraction => ['копійка', 'копійки', 'копійок'],
:uah_integral => ["гривня", "гривні", "гривень"],
:uah_fraction => ["копійка", "копійки", "копійок"],
:kzt_integral => ["тенге", "тенге", "тенге"],
:kzt_fraction => ['тиын', 'тиына', 'тиынов'],
:eur_integral => ["євро", "євро", "євро"],
:eur_fraction => ["євроцент", "євроцента", "євроцентів"],
:usd_integral => ["долар", "долара", "доларів"],
Expand All @@ -138,10 +201,11 @@ module RuPropisju
:usd => 1,
:uah => 2,
:eur => 1,
:kzt => 1,
}


# Кидается при запросе неизвестной валюты
# Кидается при запросе неизвестной валюты
class UnknownCurrency < ArgumentError
end

Expand Down Expand Up @@ -258,6 +322,17 @@ def evro(amount, locale = :ru)
money(amount, locale, integrals_key, fractions_key, money_gender)
end

# Выводит целое или дробное число как сумму в тенге прописью
#
# tenge(32) #=> "тридцать два тенге"
def tenge(amount, locale = :ru)
integrals_key = :kzt_integral
fractions_key = :kzt_fraction
money_gender = MONEY_GENDERS[:kzt]

money(amount, locale, integrals_key, fractions_key, money_gender)
end

# Выводит сумму прописью в рублях по количеству копеек
#
# kopeek(343) #=> "три рубля 43 копейки"
Expand Down Expand Up @@ -396,6 +471,24 @@ def compose_ordinal(remaining_amount_or_nil, gender, item_forms = [], locale = :
],
:prefix => ["ая", 'ых'],
},
'ru_in' =>{
:source_words => [
'целой',
'десятой',
'сотой',
'тысячной',
'десятитысячной',
'стотысячной',
'миллионной',
'десятимиллионной',
'стомиллионной',
'миллиардной',
'десятимиллиардной',
'стомиллиардной',
'триллионной'
],
:prefix => ["ой", 'ых'],
},
'ua' => {
:source_words => [
'ціла',
Expand Down
4 changes: 2 additions & 2 deletions ru_propisju.gemspec
Expand Up @@ -2,11 +2,11 @@
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
# -*- encoding: utf-8 -*-
# stub: ru_propisju 2.2.3 ruby lib
# stub: ru_propisju 2.2.4 ruby lib

Gem::Specification.new do |s|
s.name = "ru_propisju"
s.version = "2.2.3"
s.version = "2.2.4"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib"]
Expand Down

0 comments on commit 9687e5f

Please sign in to comment.