epitools 0.5.114 → 0.5.115

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12639fe716d554565a2dafdf486f339a0b5a85389dd6ab751c05ccbfbd6d76c3
4
- data.tar.gz: dc13d1ab805e37c082a14af7e4262a86d7aed06842147f1405c3cce028d0b3c8
3
+ metadata.gz: e8eee5098324ab45b4dd6302f414fa5481774f478c6f6dd69839ed12670277a8
4
+ data.tar.gz: '0828b2ee573f259aedaa75398c2878bd489aaff40567ba71d2322ab6f3083ff2'
5
5
  SHA512:
6
- metadata.gz: fd51698c2b95781babd4b7b4b741d39eac594852c2695f011c483d962d7498d6a426287e2486e158d7ff4f70d1145b385cc113a4e2fd9479404934b3f4d95faf
7
- data.tar.gz: 2a00245d9dc98adde9e5cdee8f565c7c1875f03b1413ff24a6e8de67546220f09d437440b54f4a480338cc9fadb5bd8fb7efbb694090ef4e862138ce0389b469
6
+ metadata.gz: 451de82760520fb395f34c9f88de6bc9c74f94576e256379390076f3f019453bed5457165a7371ecafa12103c3eae453d27533aee65662604f4562ff5ddc78e2
7
+ data.tar.gz: 68fdc3a7e6294f5fad2c79fc79c411feb565fed4386455a05bea879a57d21c32f92a6156b94befe45b89a73b90321aa989cd845337c80f26ec7d29a6b0b221d8
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.114
1
+ 0.5.115
@@ -12,6 +12,7 @@ require 'epitools/core_ext/hash'
12
12
  require 'epitools/core_ext/numbers'
13
13
  require 'epitools/core_ext/truthiness'
14
14
  require 'epitools/core_ext/range'
15
+ require 'epitools/core_ext/time'
15
16
  require 'epitools/core_ext/misc'
16
17
 
17
18
  ##############################################################################
@@ -201,18 +201,6 @@ end
201
201
  URI::RFC3986_Parser.prepend(Better_URI_RFC3986_Parser)
202
202
 
203
203
 
204
- class Time
205
-
206
- #
207
- # Which "quarter" of the year does this date fall into?
208
- #
209
- def quarter
210
- (month / 3.0).ceil
211
- end
212
-
213
- end
214
-
215
-
216
204
 
217
205
  #
218
206
  # Give ObjectSpace Enumerable powers (select, map, etc.)
@@ -411,48 +411,6 @@ class Float
411
411
  end
412
412
 
413
413
 
414
- class Time
415
-
416
- #
417
- # Relative time, in words. (eg: "1 second ago", "2 weeks from now", etc.)
418
- #
419
- def in_words
420
- delta = (Time.now-self).to_i
421
- a = delta.abs
422
-
423
- amount = case a
424
- when 0
425
- 'just now'
426
- when 1
427
- '1 second'
428
- when 2..59
429
- "second".amount(a)
430
- when 1.minute...1.hour
431
- "minute".amount(a/1.minute)
432
- when 1.hour...1.day
433
- "hour".amount(a/1.hour)
434
- when 1.day...7.days
435
- "day".amount(a/1.day)
436
- when 1.week...1.month
437
- "week".amount(a/1.week)
438
- when 1.month...12.months
439
- "month".amount(a/1.month)
440
- else
441
- "year".amount(a/1.year)
442
- end
443
-
444
- if delta < 0
445
- amount += " from now"
446
- elsif delta > 0
447
- amount += " ago"
448
- end
449
-
450
- amount
451
- end
452
-
453
- end
454
-
455
-
456
414
  class Prime
457
415
 
458
416
  #
@@ -0,0 +1,56 @@
1
+ class Time
2
+
3
+ #
4
+ # Relative time, in words. (eg: "1 second ago", "2 weeks from now", etc.)
5
+ #
6
+ def in_words
7
+ delta = (Time.now-self).to_i
8
+ a = delta.abs
9
+
10
+ amount = case a
11
+ when 0
12
+ 'just now'
13
+ when 1
14
+ '1 second'
15
+ when 2..59
16
+ "second".amount(a)
17
+ when 1.minute...1.hour
18
+ "minute".amount(a/1.minute)
19
+ when 1.hour...1.day
20
+ "hour".amount(a/1.hour)
21
+ when 1.day...7.days
22
+ "day".amount(a/1.day)
23
+ when 1.week...1.month
24
+ "week".amount(a/1.week)
25
+ when 1.month...12.months
26
+ "month".amount(a/1.month)
27
+ else
28
+ "year".amount(a/1.year)
29
+ end
30
+
31
+ if delta < 0
32
+ amount += " from now"
33
+ elsif delta > 0
34
+ amount += " ago"
35
+ end
36
+
37
+ amount
38
+ end
39
+
40
+ #
41
+ # Which "quarter" of the year does this date fall into?
42
+ #
43
+ def quarter
44
+ (month / 3.0).ceil
45
+ end
46
+
47
+ #
48
+ # How many seconds have elapsed since this time?
49
+ #
50
+ def elapsed
51
+ Time.now - self
52
+ end
53
+
54
+ end
55
+
56
+
@@ -41,6 +41,42 @@ module Term
41
41
  print "\e[H\e[J"
42
42
  end
43
43
 
44
+ def clear_line
45
+ print "\e[2K"
46
+ end
47
+
48
+ def clear_eol
49
+ print "\e[0K"
50
+ end
51
+
52
+ def move_to(row: 1, col: 1)
53
+ print "\e[#{row};#{col}H"
54
+ end
55
+
56
+ def home
57
+ move_to
58
+ end
59
+
60
+ def move_to_row(n)
61
+ move_to(row: n)
62
+ end
63
+
64
+ def move_to_bottom
65
+ move_to_row(height-1)
66
+ end
67
+
68
+ def move_to_top
69
+ move_to_row(1)
70
+ end
71
+
72
+ def hide_cursor
73
+ print "\e[?25l"
74
+ end
75
+
76
+ def show_cursor
77
+ print "\e[?25h"
78
+ end
79
+
44
80
  def color(fore, back=nil)
45
81
  @fore = fore
46
82
  @back = back if back
@@ -98,25 +98,28 @@ describe Object do
98
98
 
99
99
  it "memoizes" do
100
100
 
101
+ $sideffect = 0
102
+
101
103
  class Fake
102
104
 
103
- def cacheme
104
- @temp = !@temp
105
+ memoize def cached_value
106
+ $sideffect += 1
107
+ :value
105
108
  end
106
- memoize :cacheme
107
109
 
108
110
  end
109
111
 
110
112
  f = Fake.new
111
- f.instance_variable_get("@cacheme").should == nil
112
113
 
113
- f.cacheme.should == true
114
- f.instance_variable_get("@temp").should == true
115
- f.instance_variable_get("@cacheme").should == true
114
+ $sideffect.should == 0
115
+
116
+ f.cached_value.should == :value
117
+ $sideffect.should == 1
116
118
 
117
- f.cacheme.should == true
118
- f.instance_variable_get("@temp").should == true
119
- f.instance_variable_get("@cacheme").should == true
119
+ f.cached_value.should == :value
120
+ $sideffect.should == 1
121
+
122
+ $sideffect = nil
120
123
  end
121
124
 
122
125
  end
@@ -170,6 +173,8 @@ describe Numeric do
170
173
  5.days.ago.to_i.should == (Time.now - 5.days).to_i
171
174
  1.year.ago.year.should == Time.now.year - 1
172
175
  5.days.from_now.to_i.should == (Time.now + 5.days).to_i
176
+
177
+ 1.day.ago.elapsed.should be_within(0.1).of(1.day)
173
178
  end
174
179
 
175
180
  it "thingses" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epitools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.114
4
+ version: 0.5.115
5
5
  platform: ruby
6
6
  authors:
7
7
  - epitron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-13 00:00:00.000000000 Z
11
+ date: 2018-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -62,6 +62,7 @@ files:
62
62
  - lib/epitools/core_ext/object.rb
63
63
  - lib/epitools/core_ext/range.rb
64
64
  - lib/epitools/core_ext/string.rb
65
+ - lib/epitools/core_ext/time.rb
65
66
  - lib/epitools/core_ext/truthiness.rb
66
67
  - lib/epitools/daemonize.rb
67
68
  - lib/epitools/hexdump.rb