epitools 0.5.114 → 0.5.115

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