rutils 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,48 +1,65 @@
1
- require 'date'
2
-
3
1
  module RuTils
4
- module DateTime
5
- ABBR_MONTHNAMES = [nil] + %w{ Янв Фев Мар Апр Май Июн Июл Авг Сен Окт Ноя Дек }
6
- MONTHNAMES = [nil] + %w{ Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь }
7
- DAYNAMES = %w(Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота)
8
- ABBR_DAYNAMES = %w(Вск Пн Вт Ср Чт Пт Сб)
9
-
10
- def self.distance_of_time_in_words(from_time, to_time = 0, include_seconds = false, absolute = false) #nodoc
11
- from_time = from_time.to_time if from_time.respond_to?(:to_time)
12
- to_time = to_time.to_time if to_time.respond_to?(:to_time)
13
- distance_in_minutes = (((to_time - from_time).abs)/60).round
14
- distance_in_seconds = ((to_time - from_time).abs).round
15
-
16
- case distance_in_minutes
17
- when 0..1
18
- return (distance_in_minutes==0) ? 'меньше минуты' : '1 минуту' unless include_seconds
19
-
20
- case distance_in_seconds
21
- when 0..5 then 'менее 5 секунд'
22
- when 6..10 then 'менее 10 секунд'
23
- when 11..20 then 'менее 20 секунд'
24
- when 21..40 then 'пол-минуты'
25
- when 41..59 then 'меньше минуты'
26
- else '1 минуту'
27
- end
28
-
29
- when 2..45 then distance_in_minutes.to_s +
30
- " " + distance_in_minutes.items("минута", "минуты", "минут")
31
- when 46..90 then 'около часа'
32
- # исключение, сдвигаем на один влево чтобы соответствовать падежу
33
- when 90..1440 then "около " + (distance_in_minutes.to_f / 60.0).round.to_s +
34
- " " + (distance_in_minutes.to_f / 60.0).round.items("часа", "часов", '')
35
- when 1441..2880 then '1 день'
36
- else (distance_in_minutes / 1440).round.to_s +
37
- " " + (distance_in_minutes / 1440).round.items("день", "дня", "дней")
38
- end
39
- end
40
-
41
- end
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
- def ru_strftime(*args)
46
- RuTils::DateTime::RussianDate.new(self).strftime(*args)
47
- end
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