timefly 0.1.1 → 0.2.0

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.
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