rutils 1.1.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/History.txt +10 -0
- data/Manifest.txt +4 -8
- data/README.txt +20 -172
- data/Rakefile.rb +5 -11
- data/init.rb +3 -3
- data/lib/{gilenson/gilenson_stub.rb → gilenson_stub.rb} +0 -6
- data/lib/integration/integration.rb +1 -1
- data/lib/integration/rails_date_helper_override.rb +4 -4
- data/lib/pluralizer.rb +101 -0
- data/lib/rudates.rb +85 -0
- data/lib/rutils.rb +13 -7
- data/lib/transliteration.rb +30 -0
- data/lib/version.rb +1 -1
- data/test/extras/integration_rails_filter.rb +1 -1
- data/test/extras/integration_rails_gilenson_helpers.rb +1 -1
- data/test/extras/integration_rails_helpers.rb +1 -1
- data/test/run_tests.rb +1 -1
- data/test/test_datetime.rb +16 -7
- data/test/test_integration.rb +1 -1
- data/test/test_integration_flag.rb +1 -1
- data/test/test_pluralize.rb +1 -1
- data/test/test_rutils_base.rb +1 -1
- data/test/test_transliteration.rb +1 -32
- metadata +45 -32
- data/bin/rutilize +0 -38
- data/lib/countries/countries.rb +0 -1773
- data/lib/datetime/datetime.rb +0 -83
- data/lib/pluralizer/pluralizer.rb +0 -288
- data/lib/transliteration/bidi.rb +0 -21
- data/lib/transliteration/simple.rb +0 -75
- data/lib/transliteration/transliteration.rb +0 -79
data/.gemtest
ADDED
File without changes
|
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=== 2.0.0 - 19.03.2011
|
2
|
+
|
3
|
+
* Все ребята, хватит. Пользоваться рутилями на Rails 3 с Ruby 1.9.2 это пиздец и привет горячий.
|
4
|
+
Примерно как ставить тюнингованный жигулевский карбюратор на феррари.
|
5
|
+
Рутили остаются в рабочем состоянии для старых приложений для которых апгрейд на i18n+russian
|
6
|
+
не является целесообразным. Если вы использовали какую-то конкретную маленькую полезняшку из рутилей
|
7
|
+
она скорее всего доступна отдельным модулем.
|
8
|
+
|
9
|
+
Спасибо что были с нами и до новых встреч!
|
10
|
+
|
1
11
|
=== 1.1.4 - 03.11.2010
|
2
12
|
|
3
13
|
* Подавление KCODE для Ruby 1.9
|
data/Manifest.txt
CHANGED
@@ -4,19 +4,15 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
Rakefile.rb
|
6
6
|
TODO.txt
|
7
|
-
bin/rutilize
|
8
7
|
init.rb
|
9
|
-
lib/
|
10
|
-
lib/datetime/datetime.rb
|
11
|
-
lib/gilenson/gilenson_stub.rb
|
8
|
+
lib/gilenson_stub.rb
|
12
9
|
lib/integration/integration.rb
|
13
10
|
lib/integration/rails_date_helper_override.rb
|
14
11
|
lib/integration/rails_pre_filter.rb
|
15
|
-
lib/pluralizer
|
12
|
+
lib/pluralizer.rb
|
13
|
+
lib/rudates.rb
|
16
14
|
lib/rutils.rb
|
17
|
-
lib/transliteration
|
18
|
-
lib/transliteration/simple.rb
|
19
|
-
lib/transliteration/transliteration.rb
|
15
|
+
lib/transliteration.rb
|
20
16
|
lib/version.rb
|
21
17
|
test/extras/integration_rails_filter.rb
|
22
18
|
test/extras/integration_rails_gilenson_helpers.rb
|
data/README.txt
CHANGED
@@ -1,108 +1,28 @@
|
|
1
1
|
= RuTils
|
2
2
|
|
3
|
-
http://rutils
|
3
|
+
http://github.com/julik/rutils
|
4
4
|
|
5
|
-
RuTils
|
6
|
-
|
7
|
-
|
5
|
+
RuTils был целым ящиком инструментов для простой обработки русского текста на Ruby
|
6
|
+
и руссификации Ryby-приложений. После тяжелого четырехлетного труда ящик списан на пенсию
|
7
|
+
в дедушкин сарай. Для справки - "дедушкин сарай" это то место где крутятся написанные с помощью
|
8
|
+
RuTils приложения и где клиенты очень не хотят чтобы при апдейтах RuTils приложение ломалось.
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
rutils в настоящий момент - минимальная прослойка между маленькими составными библиотеками которые
|
11
|
+
можно (и нужно!) использовать отдельно. Сам модуль rutils обновляться больше не будет, функционал
|
12
|
+
заморожен, авторы ушли и выключили свет.
|
12
13
|
|
13
14
|
= Как воспользоваться
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
require 'rutils'
|
18
|
-
|
19
|
-
Для использования с Ruby on Rails установите RuTils как плагин
|
20
|
-
(скопируйте библиотеку в vendor/plugins приложения).
|
21
|
-
|
22
|
-
= Что оно делает
|
23
|
-
|
24
|
-
== Cумма прописью и выбор числительного
|
25
|
-
|
26
|
-
RuTils реализует сумму прописью для целых и дробных чисел, с дополнительным
|
27
|
-
учетом рода. Например:
|
28
|
-
|
29
|
-
4.propisju => "четыре"
|
30
|
-
345.propisju => "триста сорок пять"
|
31
|
-
231.propisju(2) => "двести тридцать одна"
|
32
|
-
341.propisju_items(1, "чемодан", "чемодана", "чемоданов") => "триста сорок один чемодан"
|
33
|
-
(212.40).propisju_items(2, "сволочь", "сволочи", "сволочей") => "двести двенадцать целых
|
34
|
-
четыре десятых сволочи"
|
35
|
-
|
36
|
-
Также реализуется выбор варианта числительного в зависимости от числа
|
37
|
-
|
38
|
-
15.items("кодер", "кодера", "кодеров") => "кодеров"
|
39
|
-
|
40
|
-
и вывод "суммы прописью" для денежных сумм в рублях
|
41
|
-
|
42
|
-
(413.2).rublej => "четыреста тринадцать рублей двадцать копеек"
|
43
|
-
1.rubl => "один рубль"
|
44
|
-
22.rublja => "двадцать два рубля"
|
45
|
-
|
46
|
-
Если вы храните денежные единицы в целочисленных типах, пользуйтесь "копеечными" вариантами:
|
47
|
-
|
48
|
-
300.kopeek => "три рубля"
|
49
|
-
121.kopeika => "один рубль двадцать одна копейка"
|
50
|
-
|
51
|
-
== Транслит
|
52
|
-
|
53
|
-
RuTils на данный момент реализует простейший транслит "в одну сторону".
|
54
|
-
"Взаимно-однозначный транслит" (BiDi-транслит) больше не поддерживается.
|
55
|
-
|
56
|
-
"Вот такое вот дело".translify => "Vot takoye vot delo"
|
57
|
-
"Несомненный прогресс по сравнению с PHP".dirify => "nesomnennyi-progress-po-sravneniu-s-php"
|
58
|
-
|
59
|
-
== Обработка русской типографики в HTML
|
60
|
-
|
61
|
-
rutils автоматически использует Gilenson (http://github.com/julik/gilenson) - улучшайзер типографики в русском наборе.
|
62
|
-
|
63
|
-
Gilenson расставит в тексте "умные" правильные кавычки (русские - для кириллицы,
|
64
|
-
английские - для латиницы), заменит "хитрые" пунктуационные символы на entities и
|
65
|
-
отформатирует знаки типа (c), (tm), телефоны и адреса.
|
66
|
-
|
67
|
-
%q{"И это называется языком?", -- таков был его вопрос}.gilensize => "«И
|
68
|
-
это называется языком?», — таков был его вопрос"
|
69
|
-
|
70
|
-
== Даты
|
71
|
-
|
72
|
-
В класс Date введены следующие константы:
|
73
|
-
|
74
|
-
* RU_MONTHNAMES (Январь Февраль Март...)
|
75
|
-
* RU_DAYNAMES (Воскресенье Понедельник...)
|
76
|
-
* RU_ABBR_MONTHNAMES (Янв Фев Мар...)
|
77
|
-
* RU_ABBR_DAYNAMES (Вск Пн Вт Ср...)
|
78
|
-
* RU_INFLECTED_MONTHNAMES (Января Февраля Марта...)
|
79
|
-
* RU_DAYNAMES_E (первое второе третье...)
|
80
|
-
|
81
|
-
Пример использования:
|
82
|
-
|
83
|
-
require 'date' date = Date.new(2005, 11, 9)
|
84
|
-
puts "#{Date::RU_ABBR_MONTHNAMES[date.mon]}" => Ноя
|
85
|
-
puts "#{Date::RU_MONTHNAMES[date.mon]}" => Ноябрь
|
86
|
-
puts "#{Date::RU_ABBR_DAYNAMES[date.wday]}" => Ср
|
87
|
-
puts "#{Date::RU_DAYNAMES[date.wday]}" => Среда
|
16
|
+
RuTils больше пользоваться не надо. Когда будет время просто рефакторните его вон. Гемы которые вам понадобятся
|
17
|
+
для реализации функций RuTils и сверх того:
|
88
18
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
Time.local(2005,"dec",31).strftime("%a, %A, %b, %B") => "Сб, Суббота, Дек, Декабрь"
|
94
|
-
Time.local(2005,"dec",31).strftime_norutils("%a, %A, %b, %B") => "Sat, Saturday, Dec, December"
|
95
|
-
|
96
|
-
== Интеграция с RedCloth и BlueCloth
|
97
|
-
|
98
|
-
RuTils в первую очередь задумывался как максимально "прозрачный" механизм
|
99
|
-
обработки русского текста в контексте Rails-приложения. Вывод стандартных рельсовых
|
100
|
-
хелперов +markdown+ и +textilize+ будет автоматически (при включенных overrides) пропускаться через
|
101
|
-
Гиленсон.
|
19
|
+
* russian
|
20
|
+
* ru_propisju
|
21
|
+
* gilenson
|
102
22
|
|
103
23
|
== Интеграция с Rails версии 2.2.2 и выше
|
104
24
|
|
105
|
-
|
25
|
+
Не надо использовать RuTils для этих приложений. Вот собственно и все.
|
106
26
|
|
107
27
|
== Интеграция с Rails версий 1.2 - 2.1.1
|
108
28
|
|
@@ -114,93 +34,21 @@ RuTils заставляет следующие функции старых (pre-
|
|
114
34
|
* +distance_of_time_in_words+ будет выводить
|
115
35
|
русские описания длительности ("более 2 часов")
|
116
36
|
|
117
|
-
== Управление оверрайдами
|
118
|
-
|
119
|
-
Перегрузку всех функций других модулей можно включать и отключать в любое время с
|
120
|
-
помощью метода RuTils::overrides=. Когда перегрузка выключена, все сторонние
|
121
|
-
хелперы будут работать в стандартном режиме (например, даты и время будут выводиться по-русски).
|
122
|
-
Это нужно когда вам нужно переключиться на английский (или любой другой язык) без перезапуска приложения.
|
123
|
-
|
124
|
-
Рекомендуемый способ использования RuTils с Ruby on Rails приложением -- установка RuTils
|
125
|
-
плагином. Для этого скопируйте директорию rutils в папку vendor/plugins вашего
|
126
|
-
приложения или воспользуйтесь командой rutilize путь_к_rails_приложению чтобы сделать это
|
127
|
-
автоматически. После этого вы сможете использовать RuTils без необходимости
|
128
|
-
установки gem на вашем сервере (не забудьте перезапустить приложение чтобы
|
129
|
-
вгрузить в него RuTils).
|
130
|
-
|
131
|
-
$ rutilize /Sites/my_app1 /Sites/my_app2 /Sites/my_another_app
|
132
|
-
|
133
37
|
== Распространения
|
134
38
|
|
135
39
|
Вы можете свободно распространять RuTils со своим приложением при условии
|
136
|
-
сохранения структуры и файла README.
|
40
|
+
сохранения структуры и файла README. Но лучше не распространяйте RuTils потому что он безнадежно устарел.
|
137
41
|
|
138
|
-
==
|
42
|
+
== Совместимость/требования
|
139
43
|
|
140
|
-
* Ruby 1.8
|
141
|
-
* Ruby 1.9.x (релизные версии начиная с 1.9.1)
|
142
|
-
* JRuby 1.1.6
|
143
|
-
|
144
|
-
== Требования
|
145
|
-
|
146
|
-
* Ruby 1.8.2 или выше, немного прямых рук
|
44
|
+
* Ruby 1.8 или выше, немного прямых рук
|
147
45
|
* Rake[http://rake.rubyforge.org],
|
148
46
|
|
149
|
-
|
150
|
-
Rails[http://rubyonrails.org],
|
151
|
-
RedCloth[http://www.whytheluckystiff.net/ruby/redcloth/] и
|
152
|
-
BlueCloth[http://www.deveiate.org/projects/BlueCloth] для выполнения тестов.
|
153
|
-
|
154
|
-
== Работает ли это с текстом в кодировке отличной от UTF-8 (Windows-1251, KOI-8)
|
155
|
-
|
156
|
-
Нет и никогда не будет.
|
157
|
-
|
158
47
|
== Как получить помощь
|
159
48
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
* Переменная $KCODE включена в режим 'u'
|
164
|
-
* Все строки которые вы собираетесь обрабатывать уже в кодировке UTF-8
|
165
|
-
|
166
|
-
Если вы используете RuTils для сайта под mod_ruby воспользуйтесь директивой
|
167
|
-
RubyKanjiCode в своем httpd.conf.
|
168
|
-
|
169
|
-
== Если вы все сделали правильно но что-то не работает
|
170
|
-
|
171
|
-
Сообщите об ошибке на странице проекта на github[http://github.com/julik/rutils/issues]
|
172
|
-
Не забудьте указать версию, ее всегда можно узнать в константе
|
173
|
-
|
174
|
-
RuTils::VERSION
|
175
|
-
|
176
|
-
== Как ускорить реализацию новых функций
|
177
|
-
|
178
|
-
Опишите нужный вам функционал и приложите тесты, которым этот функционал должен удовлетворять.
|
179
|
-
Схему организации тестов вы можете скопировать из собственных тестов RuTils.
|
180
|
-
|
181
|
-
Если вы пишете исходный код, который войдет в RuTils или в тестовые наборы,
|
182
|
-
пожалуйста следуйте следующим правилам оформления кода:
|
183
|
-
|
184
|
-
* Unix line breaks (LF)
|
185
|
-
* Кодировка файлов - строго UTF-8 без BOM (Byte Order Mark)
|
186
|
-
* Все файлы должны содержать emacs-прагму
|
187
|
-
# -*- encoding: utf-8 -*-
|
188
|
-
в первой строке
|
189
|
-
* Отступы в 2 пробела, без табуляций
|
190
|
-
* Только однозначный код для 1.8 и 1.9
|
191
|
-
* Без функций которые отсутствуют в 1.8 (в первую очередь encodings)
|
192
|
-
* Без функций которые убраны из 1.9
|
193
|
-
* Однострочные блоки с фигурными скобками, многострочные - с +do ... end+
|
194
|
-
* Все другие конвенции нормального написания
|
195
|
-
Ruby-кода (http://github.com/chneukirchen/styleguide/tree/master)
|
196
|
-
|
197
|
-
При сравнении текстовых сегментов, прошедших через хитрые форматтеры пользуйтесь assert_equal_cp
|
198
|
-
- он внятно покажет вам какой символ отличается в двух строках (иначе будете вслепую искать
|
199
|
-
разницу между двумя разными пробелами, например)
|
200
|
-
|
201
|
-
Если вы хотите участвовать в разработке RuTils - fork us on GitHub
|
202
|
-
|
203
|
-
git clone git://github.com/julik/rutils.git
|
49
|
+
Помощь по RuTils предоставляется в строго дозированном и ограниченном виде, потому что совесть тоже надо иметь.
|
50
|
+
В настоящее время есть большое количество более новых, современных библиотек реализующий функции рутилей быстро,
|
51
|
+
эффективно и совместимых с большим количеством версий Rails, ruby и так далее.
|
204
52
|
|
205
53
|
== Лицензия
|
206
54
|
|
data/Rakefile.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
$KCODE = 'u' if RUBY_VERSION < '1.9.0'
|
3
3
|
$:.reject! { |e| e.include? 'TextMate' }
|
4
4
|
|
5
|
-
require 'lib/version'
|
5
|
+
require File.expand_path(File.dirname(__FILE__) + '/lib/version')
|
6
6
|
|
7
7
|
begin
|
8
8
|
require 'rubygems'
|
@@ -14,22 +14,16 @@ begin
|
|
14
14
|
Hoe::RUBY_FLAGS.replace ENV['RUBY_FLAGS'] || "-I#{%w(lib test).join(File::PATH_SEPARATOR)}" +
|
15
15
|
(Hoe::RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
|
16
16
|
|
17
|
-
#Rake::RDocTask.class_eval do
|
18
|
-
# alias_method :_odefine, :define
|
19
|
-
# def define; @options.unshift(*DOCOPTS); _odefine; end
|
20
|
-
#end
|
21
|
-
|
22
17
|
rutils = Hoe.spec('rutils') do |p|
|
23
18
|
p.version = RuTils::VERSION
|
24
19
|
p.name = "rutils"
|
25
20
|
p.author = ["Julian 'Julik' Tarkhanov", "Danil Ivanov", "Yaroslav Markin"]
|
26
21
|
p.email = ['me@julik.nl', 'yaroslav@markin.net']
|
27
|
-
p.description = '
|
28
|
-
p.summary = '
|
29
|
-
p.extra_deps = {"gilenson" => ">=1.1.0"}
|
30
|
-
p.remote_rdoc_dir = ''
|
31
|
-
p.need_zip = true # ненвижу
|
22
|
+
p.description = 'DEPRECATED processing of russian strings'
|
23
|
+
p.summary = 'DEPRECATED processing of russian strings'
|
24
|
+
p.extra_deps = {"gilenson" => ">=1.1.0", "russian" => ">= 0.2.7", "ru_propisju" => ">= 1.0.0" }
|
32
25
|
end
|
26
|
+
|
33
27
|
rutils.spec.rdoc_options += DOCOPTS
|
34
28
|
|
35
29
|
require 'load_multi_rails_rake_tasks'
|
data/init.rb
CHANGED
@@ -5,10 +5,10 @@
|
|
5
5
|
RuTils будет автоматически загружен с включенным флагом <tt>RuTils::overrides = true</tt>.
|
6
6
|
В ActionController::Base будет установлен пре-фильтр устанавливающий флаг <tt>overrides.</tt>
|
7
7
|
=end
|
8
|
-
require File.dirname(__FILE__) + '/lib/rutils' unless defined?(RuTils)
|
8
|
+
require File.expand_path(File.dirname(__FILE__)) + '/lib/rutils' unless defined?(RuTils)
|
9
9
|
|
10
10
|
RuTils::overrides = true
|
11
|
-
require File.dirname(__FILE__) + '/lib/integration/rails_pre_filter'
|
11
|
+
require File.expand_path(File.dirname(__FILE__)) + '/lib/integration/rails_pre_filter'
|
12
12
|
|
13
13
|
def russan_gem_required?
|
14
14
|
require 'action_pack/version'
|
@@ -20,7 +20,7 @@ end
|
|
20
20
|
if russan_gem_required?
|
21
21
|
STDERR.puts "RuTils WARNING: On this version of Rails use the `russian` gem for date helper overrides instead"
|
22
22
|
else
|
23
|
-
require File.dirname(__FILE__) + '/lib/integration/rails_date_helper_override'
|
23
|
+
require File.expand_path(File.dirname(__FILE__)) + '/lib/integration/rails_date_helper_override'
|
24
24
|
::ActionController::Base.send(:helper, RuTils::DateHelper)
|
25
25
|
end
|
26
26
|
|
@@ -5,12 +5,6 @@ require "gilenson"
|
|
5
5
|
module RuTils
|
6
6
|
module GilensonStub
|
7
7
|
|
8
|
-
# Позволяет возвращать класс форматтера при вызове
|
9
|
-
# RuTils::Gilenson.new
|
10
|
-
def self.new(*args) #:nodoc:
|
11
|
-
Gilenson.new(*args)
|
12
|
-
end
|
13
|
-
|
14
8
|
# Включается на правах хелпера в Rails-приложение
|
15
9
|
module Helper
|
16
10
|
|
@@ -1 +1 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/rails_date_helper_override' if defined?(ActionView)
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/rails_date_helper_override' if defined?(ActionView)
|
@@ -25,7 +25,7 @@ module RuTils::DateHelper
|
|
25
25
|
# Целые числа интерпретируются как секунды.
|
26
26
|
# <tt>distance_of_time_in_words(50)</tt> возвращает "меньше минуты".
|
27
27
|
def distance_of_time_in_words(*args)
|
28
|
-
RuTils::overrides_enabled? ? RuTils::
|
28
|
+
RuTils::overrides_enabled? ? RuTils::RuDates.distance_of_time_in_words(*args) : super
|
29
29
|
end
|
30
30
|
|
31
31
|
# Заменяет ActionView::Helpers::DateHelper::select_month меню выбора русских месяцев.
|
@@ -52,12 +52,12 @@ module RuTils::DateHelper
|
|
52
52
|
if RuTils::overrides_enabled?
|
53
53
|
month_names = case true
|
54
54
|
when options[:use_short_month]
|
55
|
-
|
55
|
+
RuTils::RuDates::RU_ABBR_MONTHNAMES
|
56
56
|
# использование в контексте date_select с днями требует родительный падеж
|
57
57
|
when options[:order] && options[:order].include?(:day)
|
58
|
-
|
58
|
+
RuTils::RuDates::RU_INFLECTED_MONTHNAMES
|
59
59
|
else
|
60
|
-
|
60
|
+
RuTils::RuDates::RU_MONTHNAMES
|
61
61
|
end
|
62
62
|
else
|
63
63
|
if defined? I18n
|
data/lib/pluralizer.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require "rubygems"
|
3
|
+
require "ru_propisju"
|
4
|
+
|
5
|
+
module RuTils
|
6
|
+
|
7
|
+
# ++DEPRECATED++ - Сумма прописью и выбор падежа
|
8
|
+
module Pluralization #:nodoc:
|
9
|
+
def self.choose_plural(amount, *variants)
|
10
|
+
RuPropisju.choose_plural(amount, *variants)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.rublej(amount)
|
14
|
+
RuPropisju.rublej(amount)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.griven(amount)
|
18
|
+
RuPropisju.griven(amount)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.kopeek(amount)
|
22
|
+
RuPropisju.kopeek(amount)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Реализует вывод прописью любого объекта, реализующего Float
|
26
|
+
module FloatFormatting
|
27
|
+
|
28
|
+
# Выдает сумму прописью с учетом дробной доли. Дробная доля округляется до миллионной, или (если
|
29
|
+
# дробная доля оканчивается на нули) до ближайшей доли ( 500 тысячных округляется до 5 десятых).
|
30
|
+
# Дополнительный аргумент - род существительного (1 - мужской, 2- женский, 3-средний)
|
31
|
+
def propisju(gender = 2)
|
32
|
+
RuPropisju.propisju(self, gender)
|
33
|
+
end
|
34
|
+
|
35
|
+
def propisju_items(gender=1, *forms)
|
36
|
+
RuPropisju.propisju_shtuk(self, gender, *forms)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
# Реализует вывод прописью любого объекта, реализующего Numeric
|
42
|
+
module NumericFormatting
|
43
|
+
# Выбирает корректный вариант числительного в зависимости от рода и числа и оформляет сумму прописью
|
44
|
+
# 234.propisju => "двести сорок три"
|
45
|
+
# 221.propisju(2) => "двести двадцать одна"
|
46
|
+
def propisju(gender = 1)
|
47
|
+
RuPropisju.propisju(self, gender)
|
48
|
+
end
|
49
|
+
|
50
|
+
def propisju_items(gender=1, *forms)
|
51
|
+
RuPropisju.propisju_shtuk(self, gender, *forms)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Выбирает корректный вариант числительного в зависимости от рода и числа. Например:
|
55
|
+
# * 4.items("колесо", "колеса", "колес") => "колеса"
|
56
|
+
def items(one_item, two_items, five_items)
|
57
|
+
RuPropisju.choose_plural(self, one_item, two_items, five_items)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Выводит сумму в рублях прописью. Например:
|
61
|
+
# * (15.4).rublej => "пятнадцать рублей сорок копеек"
|
62
|
+
# * 1.rubl => "один рубль"
|
63
|
+
# * (3.14).rublja => "три рубля четырнадцать копеек"
|
64
|
+
def rublej
|
65
|
+
RuPropisju.rublej(self)
|
66
|
+
end
|
67
|
+
alias :rubl :rublej
|
68
|
+
alias :rublja :rublej
|
69
|
+
|
70
|
+
# Выводит сумму в гривнах прописью. Например:
|
71
|
+
# * (15.4).griven => "пятнадцать гривен сорок копеек"
|
72
|
+
# * 1.grivna => "одна гривна"
|
73
|
+
# * (3.14).grivny => "три гривны четырнадцать копеек"
|
74
|
+
def griven
|
75
|
+
RuPropisju.griven(self)
|
76
|
+
end
|
77
|
+
alias :grivna :griven
|
78
|
+
alias :grivny :griven
|
79
|
+
end
|
80
|
+
|
81
|
+
module FixnumFormatting
|
82
|
+
def kopeek
|
83
|
+
RuPropisju.kopeek(self)
|
84
|
+
end
|
85
|
+
alias :kopeika :kopeek
|
86
|
+
alias :kopeiki :kopeek
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
class Object::Numeric
|
92
|
+
include RuTils::Pluralization::NumericFormatting
|
93
|
+
end
|
94
|
+
|
95
|
+
class Object::Fixnum
|
96
|
+
include RuTils::Pluralization::FixnumFormatting
|
97
|
+
end
|
98
|
+
|
99
|
+
class Object::Float
|
100
|
+
include RuTils::Pluralization::FloatFormatting
|
101
|
+
end
|