rutils 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|