timefly 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/timefly.rb +48 -25
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0eb236b363f11934fead671908569877673710a1
4
- data.tar.gz: fd99855a45800eff91466824d863ecab412849df
3
+ metadata.gz: 68966e985e8adf1b5a47cde58c511d72bf7cc7c0
4
+ data.tar.gz: a335b6412bc2a55270ae6ca4a9465e87f953d9a3
5
5
  SHA512:
6
- metadata.gz: 1c6a9a69d854ad6705e76da1e4b82d8d3fe95f597e3a8c7edc50560f404a9ec3df63f5d72989150e3db33ed5335bddcc127f747b6877be8775563d7f7c0d2144
7
- data.tar.gz: 72264583d723679d2fd200419716e344eec42c86fb9033cd4d7488e3478ffb01f08c2ade7021ebea446c4eab6cca50229c84b321e47d1a9f9906d792b86dd092
6
+ metadata.gz: f2b4aa43b689a058d94abf9c98fdfd37ea977436fa07f26b2e3146f1570d2b580e1bf36ebff4bb115226cd5f7ca0e574e33264d3e08a462564fbf119ff178077
7
+ data.tar.gz: b2735c0c838f34a01955aa30883d3be24c5dae7bee94341cba025ad3d43eed67a6976db805c8a2ccb80ddeb9de4afd15f05b44fc84123aca3735375f81da3ed8
@@ -2,6 +2,18 @@ class Timefly
2
2
 
3
3
  attr_accessor :origin_time
4
4
 
5
+ TIME_UNIT_MAPPER = {
6
+ second: { short: 's', full: 'second' },
7
+ minute: { short: 'm', full: 'minute' },
8
+ hour: { short: 'h', full: 'hour' },
9
+ day: { short: 'd', full: 'day' },
10
+ week: { short: 'w', full: 'week' },
11
+ month: { short: 'mo', full: 'month' },
12
+ year: { short: 'y', full: 'year' },
13
+ }
14
+
15
+ DEFAULT_FORMAT = '%n %U ago'
16
+
5
17
  # initialize with either String, Time or Date instance
6
18
  # Arguments:
7
19
  # origin_time: (String/Time/Date)
@@ -39,21 +51,21 @@ class Timefly
39
51
  # Example:
40
52
  # >> Timefly.new(origin_time).time_elapsed
41
53
  # => '4 hours ago'
42
- def elapsed_time
54
+ def elapsed_time(options = {})
43
55
  if time_elapsed_in_seconds?
44
- elapsed_time_in_seconds
56
+ elapsed_time_in_seconds(options)
45
57
  elsif time_elapsed_in_minutes?
46
- elapsed_time_in_minutes
58
+ elapsed_time_in_minutes(options)
47
59
  elsif time_elapsed_in_hours?
48
- elapsed_time_in_hours
60
+ elapsed_time_in_hours(options)
49
61
  elsif time_elapsed_in_days?
50
- elapsed_time_in_days
62
+ elapsed_time_in_days(options)
51
63
  elsif time_elapsed_in_weeks?
52
- elapsed_time_in_weeks
64
+ elapsed_time_in_weeks(options)
53
65
  elsif time_elapsed_in_months?
54
- elapsed_time_in_months
66
+ elapsed_time_in_months(options)
55
67
  else
56
- elapsed_time_in_years
68
+ elapsed_time_in_years(options)
57
69
  end
58
70
  end
59
71
 
@@ -145,43 +157,54 @@ class Timefly
145
157
  (time_diff_in_secs / (60 * 60 * 24 * 30)) < 12
146
158
  end
147
159
 
148
- def elapsed_time_in_seconds
149
- 'a few seconds ago'
160
+ def elapsed_time_in_seconds(options = {})
161
+ if options[:format].nil?
162
+ 'a few seconds ago'
163
+ else
164
+ elapsed_time_in_unit(time_diff_in_secs, :second, options)
165
+ end
150
166
  end
151
167
 
152
- def elapsed_time_in_minutes
168
+ def elapsed_time_in_minutes(options = {})
153
169
  time_diff = time_diff_in_secs / 60
154
- elapsed_time_in_unit(time_diff, 'minute')
170
+ elapsed_time_in_unit(time_diff, :minute, options)
155
171
  end
156
172
 
157
- def elapsed_time_in_hours
173
+ def elapsed_time_in_hours(options = {})
158
174
  time_diff = time_diff_in_secs / (60 * 60)
159
- elapsed_time_in_unit(time_diff, 'hour')
175
+ elapsed_time_in_unit(time_diff, :hour, options)
160
176
  end
161
177
 
162
- def elapsed_time_in_days
178
+ def elapsed_time_in_days(options = {})
163
179
  time_diff = time_diff_in_secs / (60 * 60 * 24)
164
- elapsed_time_in_unit(time_diff, 'day')
180
+ elapsed_time_in_unit(time_diff, :day, options)
165
181
  end
166
182
 
167
- def elapsed_time_in_weeks
183
+ def elapsed_time_in_weeks(options = {})
168
184
  time_diff = time_diff_in_secs / (60 * 60 * 24 * 7)
169
- elapsed_time_in_unit(time_diff, 'week')
185
+ elapsed_time_in_unit(time_diff, :week, options)
170
186
  end
171
187
 
172
- def elapsed_time_in_months
188
+ def elapsed_time_in_months(options = {})
173
189
  time_diff = time_diff_in_secs / (60 * 60 * 24 * 30)
174
- elapsed_time_in_unit(time_diff, 'month')
190
+ elapsed_time_in_unit(time_diff, :month, options)
175
191
  end
176
192
 
177
- def elapsed_time_in_years
193
+ def elapsed_time_in_years(options = {})
178
194
  time_diff = time_diff_in_secs / (60 * 60 * 24 * 30 * 12)
179
- elapsed_time_in_unit(time_diff, 'year')
195
+ elapsed_time_in_unit(time_diff, :year, options)
180
196
  end
181
197
 
182
- def elapsed_time_in_unit(time_diff, unit)
183
- unit += 's' if time_diff > 1
184
- "#{time_diff} #{unit} ago"
198
+ def elapsed_time_in_unit(time_diff, unit_type, options = {})
199
+ options[:format] = DEFAULT_FORMAT if options[:format].nil?
200
+ unit = ''
201
+ if options[:format].include?('%u')
202
+ unit = TIME_UNIT_MAPPER[unit_type][:short]
203
+ elsif options[:format].include?('%U')
204
+ unit = TIME_UNIT_MAPPER[unit_type][:full]
205
+ unit += 's' if time_diff > 1
206
+ end
207
+ options[:format].gsub(/\%u/i, unit).gsub(/\%n/, time_diff.to_s)
185
208
  end
186
209
 
187
210
  # END time_elapsed helper methods --------------------------------
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timefly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaurav Singha Roy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-20 00:00:00.000000000 Z
11
+ date: 2015-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec