dotiw 5.1.0 → 5.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,3 +23,38 @@ nl:
23
23
  one: 1 jaar
24
24
  other: "%{count} jaar"
25
25
  less_than_x: "minder dan %{distance}"
26
+ dotiw_compact:
27
+ seconds:
28
+ one: 1s
29
+ other: "%{count}s"
30
+ minutes:
31
+ one: 1m
32
+ other: "%{count}m"
33
+ hours:
34
+ one: 1u
35
+ other: "%{count}u"
36
+ days:
37
+ one: 1d
38
+ other: "%{count}d"
39
+ weeks:
40
+ one: 1w
41
+ other: "%{count}w"
42
+ months:
43
+ one: 1ma
44
+ other: "%{count}ma"
45
+ years:
46
+ one: 1j
47
+ other: "%{count}j"
48
+ less_than_x: "<%{distance}"
49
+ words_connector: ""
50
+ two_words_connector: ""
51
+ last_word_connector: ""
52
+ about_x_years:
53
+ one: ~1j
54
+ any: "~%{count}j"
55
+ over_x_years:
56
+ one: ">1j"
57
+ other: ">%{count}j"
58
+ almost_x_years:
59
+ one: ~1j
60
+ any: "~%{count}j"
@@ -37,3 +37,38 @@ pl:
37
37
  many: "%{count} lat"
38
38
  other: "%{count} lat"
39
39
  less_than_x: "mniej niż %{distance}"
40
+ dotiw_compact:
41
+ seconds:
42
+ one: 1s
43
+ other: "%{count}s"
44
+ minutes:
45
+ one: 1m
46
+ other: "%{count}m"
47
+ hours:
48
+ one: 1g
49
+ other: "%{count}g"
50
+ days:
51
+ one: 1d
52
+ other: "%{count}d"
53
+ weeks:
54
+ one: 1t
55
+ other: "%{count}t"
56
+ months:
57
+ one: 1mi
58
+ other: "%{count}mi"
59
+ years:
60
+ one: 1r
61
+ other: "%{count}l"
62
+ less_than_x: "<%{distance}"
63
+ words_connector: ""
64
+ two_words_connector: ""
65
+ last_word_connector: ""
66
+ about_x_years:
67
+ one: ~1r
68
+ any: "~%{count}r"
69
+ over_x_years:
70
+ one: ">1r"
71
+ other: ">%{count}r"
72
+ almost_x_years:
73
+ one: ~1r
74
+ any: "~%{count}r"
@@ -23,3 +23,38 @@ pt-BR:
23
23
  one: 1 ano
24
24
  other: "%{count} anos"
25
25
  less_than_x: "menos de %{distance}"
26
+ dotiw_compact:
27
+ seconds:
28
+ one: 1s
29
+ other: "%{count}s"
30
+ minutes:
31
+ one: 1m
32
+ other: "%{count}m"
33
+ hours:
34
+ one: 1h
35
+ other: "%{count}h"
36
+ days:
37
+ one: 1d
38
+ other: "%{count}d"
39
+ weeks:
40
+ one: 1s
41
+ other: "%{count}s"
42
+ months:
43
+ one: 1mê
44
+ other: "%{count}mê"
45
+ years:
46
+ one: 1a
47
+ other: "%{count}a"
48
+ less_than_x: "<%{distance}"
49
+ words_connector: ""
50
+ two_words_connector: ""
51
+ last_word_connector: ""
52
+ about_x_years:
53
+ one: ~1a
54
+ any: "~%{count}a"
55
+ over_x_years:
56
+ one: ">1a"
57
+ other: ">%{count}a"
58
+ almost_x_years:
59
+ one: ~1a
60
+ any: "~%{count}a"
@@ -37,3 +37,40 @@ ru:
37
37
  many: "%{count} лет"
38
38
  other: "%{count} года"
39
39
  less_than_x: "меньше, чем %{distance}"
40
+ dotiw_compact:
41
+ seconds:
42
+ one: 1с
43
+ other: "%{count}с"
44
+ minutes:
45
+ one: 1м
46
+ other: "%{count}м"
47
+ hours:
48
+ one: 1ч
49
+ other: "%{count}ч"
50
+ days:
51
+ one: 1д
52
+ other: "%{count}д"
53
+ weeks:
54
+ one: 1н
55
+ other: "%{count}н"
56
+ months:
57
+ one: 1ме
58
+ other: "%{count}ме"
59
+ years:
60
+ one: "%{count}г"
61
+ few: "%{count}г"
62
+ many: "%{count}л"
63
+ other: "%{count}г"
64
+ less_than_x: "<%{distance}"
65
+ words_connector: ""
66
+ two_words_connector: ""
67
+ last_word_connector: ""
68
+ about_x_years:
69
+ one: ~1г
70
+ any: "~%{count}г"
71
+ over_x_years:
72
+ one: ">1г"
73
+ other: ">%{count}г"
74
+ almost_x_years:
75
+ one: ~1г
76
+ any: "~%{count}г"
@@ -0,0 +1,48 @@
1
+ sv:
2
+ datetime:
3
+ dotiw:
4
+ seconds:
5
+ one: 1 sekund
6
+ other: "%{count} sekunder"
7
+ minutes:
8
+ one: 1 minut
9
+ other: "%{count} minuter"
10
+ hours:
11
+ one: 1 timme
12
+ other: "%{count} timmar"
13
+ days:
14
+ one: 1 dag
15
+ other: "%{count} dagar"
16
+ weeks:
17
+ one: 1 vecka
18
+ other: "%{count} veckor"
19
+ months:
20
+ one: 1 månad
21
+ other: "%{count} månader"
22
+ years:
23
+ one: 1 år
24
+ other: "%{count} år"
25
+ less_than_x: "mindre än %{distance}"
26
+ dotiw_compact:
27
+ seconds:
28
+ one: 1s
29
+ other: "%{count}s"
30
+ minutes:
31
+ one: 1m
32
+ other: "%{count}m"
33
+ hours:
34
+ one: 1t
35
+ other: "%{count}t"
36
+ days:
37
+ one: 1d
38
+ other: "%{count}d"
39
+ weeks:
40
+ one: 1v
41
+ other: "%{count}v"
42
+ months:
43
+ one: 1m
44
+ other: "%{count}m"
45
+ years:
46
+ one: 1å
47
+ other: "%{count}å"
48
+ less_than_x: "<%{distance}"
@@ -23,3 +23,26 @@ vi:
23
23
  one: 1 năm
24
24
  other: "%{count} năm"
25
25
  less_than_x: "ít hơn %{distance}"
26
+ dotiw_compact:
27
+ seconds:
28
+ one: 1 giây
29
+ other: "%{count}giây"
30
+ minutes:
31
+ one: 1 phút
32
+ other: "%{count}phút"
33
+ hours:
34
+ one: 1 giờ
35
+ other: "%{count}giờ"
36
+ days:
37
+ one: 1 ngày
38
+ other: "%{count}ngày"
39
+ weeks:
40
+ one: 1 tuần
41
+ other: "%{count}tuần"
42
+ months:
43
+ one: 1 tháng
44
+ other: "%{count}tháng"
45
+ years:
46
+ one: 1 năm
47
+ other: "%{count}năm"
48
+ less_than_x: "< %{distance}"
@@ -23,3 +23,26 @@ zh-CN:
23
23
  one: 1 年
24
24
  other: "%{count} 年"
25
25
  less_than_x: "小于 %{distance}"
26
+ dotiw_compact:
27
+ seconds:
28
+ one: 1秒
29
+ other: "%{count}秒"
30
+ minutes:
31
+ one: 1分钟
32
+ other: "%{count}分钟"
33
+ hours:
34
+ one: 1小时
35
+ other: "%{count}小时"
36
+ days:
37
+ one: 1天
38
+ other: "%{count}天"
39
+ weeks:
40
+ one: 1周
41
+ other: "%{count}周"
42
+ months:
43
+ one: 1月
44
+ other: "%{count}月"
45
+ years:
46
+ one: 1年
47
+ other: "%{count}年"
48
+ less_than_x: "小于 %{distance}"
@@ -0,0 +1,60 @@
1
+ zh-TW:
2
+ datetime:
3
+ dotiw:
4
+ seconds:
5
+ one: 1 秒
6
+ other: "%{count} 秒"
7
+ minutes:
8
+ one: 1 分鐘
9
+ other: "%{count} 分鐘"
10
+ hours:
11
+ one: 1 小時
12
+ other: "%{count} 小時"
13
+ days:
14
+ one: 1 天
15
+ other: "%{count} 天"
16
+ weeks:
17
+ one: 1 週
18
+ other: "%{count} 週"
19
+ months:
20
+ one: 1 月
21
+ other: "%{count} 月"
22
+ years:
23
+ one: 1 年
24
+ other: "%{count} 年"
25
+ less_than_x: "小於 %{distance}"
26
+ dotiw_compact:
27
+ seconds:
28
+ one: 1秒
29
+ other: "%{count}秒"
30
+ minutes:
31
+ one: 1分鐘
32
+ other: "%{count}分鐘"
33
+ hours:
34
+ one: 1小時
35
+ other: "%{count}小時"
36
+ days:
37
+ one: 1天
38
+ other: "%{count}天"
39
+ weeks:
40
+ one: 1週
41
+ other: "%{count}週"
42
+ months:
43
+ one: 1月
44
+ other: "%{count}月"
45
+ years:
46
+ one: 1年
47
+ other: "%{count}年"
48
+ less_than_x: "小於%{distance}"
49
+ words_connector: ""
50
+ two_words_connector: ""
51
+ last_word_connector: ""
52
+ about_x_years:
53
+ one: 約1年
54
+ any: "約%{count}年"
55
+ over_x_years:
56
+ one: "大於1年"
57
+ other: "大於%{count}年"
58
+ almost_x_years:
59
+ one: 將近1年
60
+ any: "將近%{count}年"
data/lib/dotiw/methods.rb CHANGED
@@ -12,18 +12,25 @@ module DOTIW
12
12
  end
13
13
 
14
14
  def distance_of_time(seconds, options = {})
15
- options[:include_seconds] ||= true
15
+ options = options_with_scope(options).reverse_merge(
16
+ include_seconds: true
17
+ )
18
+ options.delete(:compact)
16
19
  _display_time_in_words DOTIW::TimeHash.new(seconds, nil, nil, options).to_hash, options
17
20
  end
18
21
 
19
22
  def distance_of_time_in_words(from_time, to_time = 0, include_seconds_or_options = {}, options = {})
23
+ raise ArgumentError, "nil can't be converted to a Time value" if from_time.nil? || to_time.nil?
24
+
20
25
  if include_seconds_or_options.is_a?(Hash)
21
26
  options = include_seconds_or_options
22
27
  else
28
+ options = options.dup
23
29
  options[:include_seconds] ||= !!include_seconds_or_options
24
30
  end
25
31
  return distance_of_time(from_time, options) if to_time == 0
26
32
 
33
+ options = options_with_scope(options)
27
34
  hash = distance_of_time_in_words_hash(from_time, to_time, options)
28
35
  _display_time_in_words(hash, options)
29
36
  end
@@ -34,8 +41,16 @@ module DOTIW
34
41
 
35
42
  private
36
43
 
44
+ def options_with_scope(options)
45
+ if options.key?(:compact)
46
+ options.merge(scope: DOTIW::DEFAULT_I18N_SCOPE_COMPACT)
47
+ else
48
+ options
49
+ end
50
+ end
51
+
37
52
  def _display_time_in_words(hash, options = {})
38
- options.reverse_merge!(
53
+ options = options.reverse_merge(
39
54
  include_seconds: false
40
55
  ).symbolize_keys!
41
56
 
@@ -77,17 +92,17 @@ module DOTIW
77
92
  highest_measures = 1 if options.delete(:highest_measure_only)
78
93
  output = output[0...highest_measures] if highest_measures
79
94
 
80
- options[:words_connector] ||= I18n.translate :'datetime.dotiw.words_connector',
95
+ options[:words_connector] ||= I18n.translate :"#{i18n_scope}.words_connector",
81
96
  default: :'support.array.words_connector',
82
97
  locale: options[:locale]
83
- options[:two_words_connector] ||= I18n.translate :'datetime.dotiw.two_words_connector',
98
+ options[:two_words_connector] ||= I18n.translate :"#{i18n_scope}.two_words_connector",
84
99
  default: :'support.array.two_words_connector',
85
100
  locale: options[:locale]
86
- options[:last_word_connector] ||= I18n.translate :'datetime.dotiw.last_word_connector',
101
+ options[:last_word_connector] ||= I18n.translate :"#{i18n_scope}.last_word_connector",
87
102
  default: :'support.array.last_word_connector',
88
103
  locale: options[:locale]
89
104
 
90
- output.to_sentence(options)
105
+ output.to_sentence(options.except(:accumulate_on, :compact))
91
106
  end
92
107
  end
93
- end # DOTIW
108
+ end
@@ -8,7 +8,7 @@ module DOTIW
8
8
 
9
9
  def initialize(distance, from_time, to_time = nil, options = {})
10
10
  @output = {}
11
- @options = options
11
+ @options = options.dup
12
12
  @distance = distance
13
13
  @from_time = from_time || Time.current
14
14
  @to_time = to_time || (@to_time_not_given = true && @from_time + distance.seconds)
@@ -34,23 +34,29 @@ module DOTIW
34
34
 
35
35
  attr_reader :options, :output
36
36
 
37
+ ONE_MINUTE = 1.minute.freeze
38
+ ONE_HOUR = 1.hour.freeze
39
+ ONE_DAY = 1.day.freeze
40
+ ONE_WEEK = 7.days.freeze
41
+ FOUR_WEEKS = 28.days.freeze
42
+
37
43
  def build_time_hash
38
- if accumulate_on = options.delete(:accumulate_on)
44
+ if accumulate_on = options[:accumulate_on]
39
45
  accumulate_on = accumulate_on.to_sym
40
46
  return build_time_hash if accumulate_on == :years
41
47
 
42
48
  TIME_FRACTIONS.index(accumulate_on).downto(0) { |i| send("build_#{TIME_FRACTIONS[i]}") }
43
49
  else
44
50
  while distance > 0
45
- if distance < 1.minute
51
+ if distance < ONE_MINUTE
46
52
  build_seconds
47
- elsif distance < 1.hour
53
+ elsif distance < ONE_HOUR
48
54
  build_minutes
49
- elsif distance < 1.day
55
+ elsif distance < ONE_DAY
50
56
  build_hours
51
- elsif distance < 7.days
57
+ elsif distance < ONE_WEEK
52
58
  build_days
53
- elsif distance < 28.days
59
+ elsif distance < FOUR_WEEKS
54
60
  build_weeks
55
61
  else # greater than a week
56
62
  build_years_months_weeks_days
@@ -67,19 +73,19 @@ module DOTIW
67
73
  end
68
74
 
69
75
  def build_minutes
70
- output[:minutes], @distance = distance.divmod(1.minute.to_i)
76
+ output[:minutes], @distance = distance.divmod(ONE_MINUTE.to_i)
71
77
  end
72
78
 
73
79
  def build_hours
74
- output[:hours], @distance = distance.divmod(1.hour.to_i)
80
+ output[:hours], @distance = distance.divmod(ONE_HOUR.to_i)
75
81
  end
76
82
 
77
83
  def build_days
78
- output[:days], @distance = distance.divmod(1.day.to_i) unless output[:days]
84
+ output[:days], @distance = distance.divmod(ONE_DAY.to_i) unless output[:days]
79
85
  end
80
86
 
81
87
  def build_weeks
82
- output[:weeks], @distance = distance.divmod(1.week.to_i) unless output[:weeks]
88
+ output[:weeks], @distance = distance.divmod(ONE_WEEK.to_i) unless output[:weeks]
83
89
  end
84
90
 
85
91
  def build_months
@@ -137,9 +143,9 @@ module DOTIW
137
143
  output[:weeks] = weeks
138
144
  output[:days] = days
139
145
 
140
- total_days, @distance = distance.abs.divmod(1.day.to_i)
146
+ total_days, @distance = distance.abs.divmod(ONE_DAY.to_i)
141
147
 
142
148
  [total_days, @distance]
143
149
  end
144
- end # TimeHash
145
- end # DOTIW
150
+ end
151
+ end
data/lib/dotiw/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DOTIW
4
- VERSION = '5.1.0'
4
+ VERSION = '5.3.2'
5
5
  end
data/lib/dotiw.rb CHANGED
@@ -17,6 +17,7 @@ module DOTIW
17
17
  extend self
18
18
 
19
19
  DEFAULT_I18N_SCOPE = :'datetime.dotiw'
20
+ DEFAULT_I18N_SCOPE_COMPACT = :'datetime.dotiw_compact'
20
21
 
21
22
  def init_i18n!
22
23
  I18n.load_path.unshift(*locale_files)
@@ -36,7 +37,7 @@ module DOTIW
36
37
  def files(directory, ext)
37
38
  Dir[File.join File.dirname(__FILE__), directory, ext]
38
39
  end
39
- end # DOTIW
40
+ end
40
41
 
41
42
  DOTIW.init_i18n!
42
43