rutils 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +45 -0
- data/README +97 -36
- data/TODO +1 -16
- data/bin/gilensize +1 -1
- data/lib/countries/countries.rb +1772 -0
- data/lib/datetime/datetime.rb +60 -43
- data/lib/gilenson/gilenson.rb +594 -249
- data/lib/gilenson/gilenson_port.rb +287 -307
- data/lib/integration/rails_date_helper_override.rb +9 -31
- data/lib/integration/red_cloth_override.rb +2 -1
- data/lib/pluralizer/pluralizer.rb +213 -192
- data/lib/rutils.rb +23 -11
- data/lib/transliteration/transliteration.rb +148 -148
- data/test/run_tests.rb +2 -2
- data/test/t_datetime.rb +32 -6
- data/test/t_gilenson.rb +291 -29
- data/test/t_integration.rb +33 -33
- data/test/t_pluralize.rb +56 -49
- data/test/t_transliteration.rb +68 -68
- data/test/t_typografica.rb +46 -46
- metadata +5 -4
- data/test/t_binaries.rb +0 -26
data/lib/datetime/datetime.rb
CHANGED
@@ -1,48 +1,65 @@
|
|
1
|
-
require 'date'
|
2
|
-
|
3
1
|
module RuTils
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
2
|
+
module DateTime
|
3
|
+
|
4
|
+
def self.distance_of_time_in_words(from_time, to_time = 0, include_seconds = false, absolute = false) #nodoc
|
5
|
+
from_time = from_time.to_time if from_time.respond_to?(:to_time)
|
6
|
+
to_time = to_time.to_time if to_time.respond_to?(:to_time)
|
7
|
+
distance_in_minutes = (((to_time - from_time).abs)/60).round
|
8
|
+
distance_in_seconds = ((to_time - from_time).abs).round
|
9
|
+
|
10
|
+
case distance_in_minutes
|
11
|
+
when 0..1
|
12
|
+
return (distance_in_minutes==0) ? 'меньше минуты' : '1 минуту' unless include_seconds
|
13
|
+
|
14
|
+
case distance_in_seconds
|
15
|
+
when 0..5 then 'менее 5 секунд'
|
16
|
+
when 6..10 then 'менее 10 секунд'
|
17
|
+
when 11..20 then 'менее 20 секунд'
|
18
|
+
when 21..40 then 'пол-минуты'
|
19
|
+
when 41..59 then 'меньше минуты'
|
20
|
+
else '1 минуту'
|
21
|
+
end
|
22
|
+
|
23
|
+
when 2..45 then distance_in_minutes.to_s +
|
24
|
+
" " + distance_in_minutes.items("минута", "минуты", "минут")
|
25
|
+
when 46..90 then 'около часа'
|
26
|
+
# исключение, сдвигаем на один влево чтобы соответствовать падежу
|
27
|
+
when 90..1440 then "около " + (distance_in_minutes.to_f / 60.0).round.to_s +
|
28
|
+
" " + (distance_in_minutes.to_f / 60.0).round.items("часа", "часов", '')
|
29
|
+
when 1441..2880 then '1 день'
|
30
|
+
else (distance_in_minutes / 1440).round.to_s +
|
31
|
+
" " + (distance_in_minutes / 1440).round.items("день", "дня", "дней")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
@@ignored = "\xFF\xFF\xFF\xFF" # %% == Literal "%" character
|
36
|
+
|
37
|
+
def self.ru_strftime(date='%d.%m.%Y', time='')
|
38
|
+
date.gsub!(/%%/, @@ignored)
|
39
|
+
date.gsub!(/%a/, Date::RU_ABBR_DAYNAMES[time.wday])
|
40
|
+
date.gsub!(/%A/, Date::RU_DAYNAMES[time.wday])
|
41
|
+
date.gsub!(/%b/, Date::RU_ABBR_MONTHNAMES[time.mon])
|
42
|
+
date.gsub!(/%B/, Date::RU_MONTHNAMES[time.mon])
|
43
|
+
date.gsub!(@@ignored, '%%')
|
44
|
+
end
|
45
|
+
end
|
42
46
|
end
|
43
47
|
|
44
48
|
class Date
|
45
|
-
|
46
|
-
|
47
|
-
|
49
|
+
RU_MONTHNAMES = [nil] + %w{ Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь }
|
50
|
+
RU_DAYNAMES = %w(Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота)
|
51
|
+
RU_ABBR_MONTHNAMES = [nil] + %w{ Янв Фев Мар Апр Май Июн Июл Авг Сен Окт Ноя Дек }
|
52
|
+
RU_ABBR_DAYNAMES = %w(Вск Пн Вт Ср Чт Пт Сб)
|
53
|
+
RU_INFLECTED_MONTHNAMES = [nil] + %w{ Января Февраля Марта Апреля Мая Июня Июля Авгуса Сентября Октября Ноября Декабря }
|
54
|
+
# RU_DAYNAMES_E -- оставить?
|
55
|
+
RU_DAYNAMES_E = [nil] + %w{первое второе третье четвёртое пятое шестое седьмое восьмое девятое десятое одиннадцатое двенадцатое тринадцатое четырнадцатое пятнадцатое шестнадцатое семнадцатое восемнадцатое девятнадцатое двадцатое двадцать тридцатое тридцатьпервое}
|
56
|
+
end
|
57
|
+
|
58
|
+
class Time
|
59
|
+
alias_method :strftime_norutils, :strftime
|
60
|
+
|
61
|
+
def strftime(date)
|
62
|
+
RuTils::DateTime::ru_strftime(date, self) if RuTils::overrides_enabled?
|
63
|
+
strftime_norutils(date)
|
64
|
+
end
|
48
65
|
end
|