fugit 0.9.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/fugit.gemspec +2 -1
- data/lib/fugit.rb +2 -1
- data/lib/fugit/cron.rb +8 -25
- data/lib/fugit/duration.rb +19 -17
- data/lib/fugit/misc.rb +2 -2
- data/lib/fugit/nat.rb +13 -13
- data/lib/fugit/parse.rb +6 -7
- metadata +31 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3e0133c5181167fb43ca7228ce7b76d154f402a
|
4
|
+
data.tar.gz: 3ff631d838f4ea26b0af2c11701356f71e9518f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb8cfb83bb07a6289bc86b24a1c9c26510a807734a1f81b8f132f032c7015081320408515f606696a4fea03fa00bc6c7d2278d0ad6390fc3c8a277034e627683
|
7
|
+
data.tar.gz: b1ec3168fd15980353048e3261e848bf63c7e740f47388e20f0f3c8e3b2bd4a9c1cab324a7663d60b5a71aba7ecc473b9453f0d2ee9eab859a4aa5f017df3d87
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
# fugit CHANGELOG.md
|
3
3
|
|
4
4
|
|
5
|
+
## fugit 1.0.0 released 2017-06-23
|
6
|
+
|
7
|
+
* introduce et-orbi dependency (1.0.5 or better)
|
8
|
+
* Wire #deflate into Duration.to_long_s / .to_iso_s / .to_plain_s
|
9
|
+
|
10
|
+
|
5
11
|
## fugit 0.9.6 released 2017-05-24
|
6
12
|
|
7
13
|
* Provide Duration.to_long_s / .to_iso_s / .to_plain_s at class level
|
data/fugit.gemspec
CHANGED
@@ -26,7 +26,8 @@ Time tools for flor and the floraison project. Cron parsing and occurence comput
|
|
26
26
|
]
|
27
27
|
|
28
28
|
#s.add_runtime_dependency 'tzinfo'
|
29
|
-
s.add_runtime_dependency 'raabro', '
|
29
|
+
s.add_runtime_dependency 'raabro', '~> 1.1'
|
30
|
+
s.add_runtime_dependency 'et-orbi', '>= 1.0.5'
|
30
31
|
|
31
32
|
s.add_development_dependency 'rspec', '~> 3.4'
|
32
33
|
|
data/lib/fugit.rb
CHANGED
data/lib/fugit/cron.rb
CHANGED
@@ -58,22 +58,20 @@ module Fugit
|
|
58
58
|
parse(s) || fail(ArgumentError.new("not a cron string #{s.inspect}"))
|
59
59
|
end
|
60
60
|
|
61
|
-
class TimeCursor
|
61
|
+
class TimeCursor
|
62
62
|
|
63
63
|
def initialize(t)
|
64
|
-
@t = t.is_a?(TimeCursor) ? t.time : t
|
64
|
+
@t = t.is_a?(TimeCursor) ? t.time : ::EtOrbi.make_time(t)
|
65
65
|
end
|
66
66
|
|
67
67
|
def time; @t; end
|
68
68
|
def to_i; @t.to_i; end
|
69
69
|
|
70
|
-
%w[ year month day wday hour min sec ]
|
70
|
+
%w[ year month day wday hour min sec wday_in_month ]
|
71
71
|
.collect(&:to_sym).each { |k| define_method(k) { @t.send(k) } }
|
72
72
|
|
73
73
|
def inc(i)
|
74
|
-
|
75
|
-
@t = ::Time.at(@t.to_i + i)
|
76
|
-
@t = @t.utc if u
|
74
|
+
@t = @t + i
|
77
75
|
self
|
78
76
|
end
|
79
77
|
def dec(i); inc(-i); end
|
@@ -82,7 +80,7 @@ module Fugit
|
|
82
80
|
y = @t.year
|
83
81
|
m = @t.month + 1
|
84
82
|
if m == 13; m = 1; y += 1; end
|
85
|
-
@t =
|
83
|
+
@t = ::EtOrbi.make(y, m)
|
86
84
|
self
|
87
85
|
end
|
88
86
|
def inc_day; inc((24 - @t.hour) * 3600 - @t.min * 60 - @t.sec); end
|
@@ -108,20 +106,6 @@ module Fugit
|
|
108
106
|
target = seconds.reverse.find { |s| s < @t.sec } || seconds.last
|
109
107
|
inc(target - @t.sec)
|
110
108
|
end
|
111
|
-
|
112
|
-
def count_weeks(inc)
|
113
|
-
c = 0
|
114
|
-
t = @t
|
115
|
-
until t.month != @t.month
|
116
|
-
c += 1
|
117
|
-
t += inc * (7 * 24 * 3600)
|
118
|
-
end
|
119
|
-
c
|
120
|
-
end
|
121
|
-
|
122
|
-
def wday_in_month
|
123
|
-
[ count_weeks(-1), - count_weeks(1) ]
|
124
|
-
end
|
125
109
|
end
|
126
110
|
|
127
111
|
def month_match?(nt); ( ! @months) || @months.include?(nt.month); end
|
@@ -172,13 +156,12 @@ module Fugit
|
|
172
156
|
def match?(t)
|
173
157
|
|
174
158
|
t = Fugit.do_parse_at(t)
|
175
|
-
t = TimeCursor.new(t)
|
176
159
|
|
177
160
|
month_match?(t) && day_match?(t) &&
|
178
161
|
hour_match?(t) && min_match?(t) && sec_match?(t)
|
179
162
|
end
|
180
163
|
|
181
|
-
def next_time(from
|
164
|
+
def next_time(from=::EtOrbi::EoTime.now)
|
182
165
|
|
183
166
|
t = TimeCursor.new(from)
|
184
167
|
|
@@ -196,7 +179,7 @@ module Fugit
|
|
196
179
|
t.time
|
197
180
|
end
|
198
181
|
|
199
|
-
def previous_time(from
|
182
|
+
def previous_time(from=::EtOrbi::EoTime.now)
|
200
183
|
|
201
184
|
t = TimeCursor.new(from)
|
202
185
|
|
@@ -228,7 +211,7 @@ module Fugit
|
|
228
211
|
|
229
212
|
deltas = []
|
230
213
|
|
231
|
-
t =
|
214
|
+
t = EtOrbi.make_time("#{year}-01-01") - 1
|
232
215
|
t0 = nil
|
233
216
|
t1 = nil
|
234
217
|
loop do
|
data/lib/fugit/duration.rb
CHANGED
@@ -97,9 +97,9 @@ module Fugit
|
|
97
97
|
end
|
98
98
|
|
99
99
|
class << self
|
100
|
-
def to_plain_s(o); do_parse(o).to_plain_s; end
|
101
|
-
def to_iso_s(o); do_parse(o).to_iso_s; end
|
102
|
-
def to_long_s(o, opts={}); do_parse(o).to_long_s(opts); end
|
100
|
+
def to_plain_s(o); do_parse(o).deflate.to_plain_s; end
|
101
|
+
def to_iso_s(o); do_parse(o).deflate.to_iso_s; end
|
102
|
+
def to_long_s(o, opts={}); do_parse(o).deflate.to_long_s(opts); end
|
103
103
|
end
|
104
104
|
|
105
105
|
# Warning: this is an "approximation", months are 30 days and years are
|
@@ -170,6 +170,8 @@ module Fugit
|
|
170
170
|
|
171
171
|
def add_to_time(t)
|
172
172
|
|
173
|
+
t = ::EtOrbi.make_time(t)
|
174
|
+
|
173
175
|
INFLA_KEYS.each do |k, a|
|
174
176
|
|
175
177
|
v = @h[k]; next unless v
|
@@ -192,7 +194,7 @@ module Fugit
|
|
192
194
|
at[0], at[1] = at[0] - n, m
|
193
195
|
end
|
194
196
|
|
195
|
-
t =
|
197
|
+
t = ::EtOrbi.make_time(at, t.zone)
|
196
198
|
end
|
197
199
|
|
198
200
|
t
|
@@ -201,12 +203,12 @@ module Fugit
|
|
201
203
|
def add(a)
|
202
204
|
|
203
205
|
case a
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
206
|
+
when Numeric then add_numeric(a)
|
207
|
+
when Fugit::Duration then add_duration(a)
|
208
|
+
when String then add_duration(self.class.parse(a))
|
209
|
+
when ::Time, EtOrbi::EoTime then add_to_time(a)
|
210
|
+
else fail ArgumentError.new(
|
211
|
+
"cannot add #{a.class} instance to a Fugit::Duration")
|
210
212
|
end
|
211
213
|
end
|
212
214
|
alias + add
|
@@ -214,12 +216,12 @@ module Fugit
|
|
214
216
|
def substract(a)
|
215
217
|
|
216
218
|
case a
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
219
|
+
when Numeric then add_numeric(-a)
|
220
|
+
when Fugit::Duration then add_duration(-a)
|
221
|
+
when String then add_duration(-self.class.parse(a))
|
222
|
+
when ::Time, ::EtOrbi::EoTime then add_to_time(a)
|
223
|
+
else fail ArgumentError.new(
|
224
|
+
"cannot substract #{a.class} instance to a Fugit::Duration")
|
223
225
|
end
|
224
226
|
end
|
225
227
|
alias - substract
|
@@ -235,7 +237,7 @@ module Fugit
|
|
235
237
|
@h.hash
|
236
238
|
end
|
237
239
|
|
238
|
-
def next_time(from
|
240
|
+
def next_time(from=::EtOrbi::EoTime.now)
|
239
241
|
|
240
242
|
add(from)
|
241
243
|
end
|
data/lib/fugit/misc.rb
CHANGED
@@ -19,9 +19,9 @@ module Fugit
|
|
19
19
|
isostamp(true, true, false, t)
|
20
20
|
end
|
21
21
|
|
22
|
-
def self.time_to_plain_s(t=Time.now)
|
22
|
+
def self.time_to_plain_s(t=Time.now, z=true)
|
23
23
|
|
24
|
-
t.strftime('%Y-%m-%d %H:%M:%S') + (t.utc? ? ' Z' : '')
|
24
|
+
t.strftime('%Y-%m-%d %H:%M:%S') + (z && t.utc? ? ' Z' : '')
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.time_to_zone_s(t=Time.now)
|
data/lib/fugit/nat.rb
CHANGED
@@ -116,19 +116,19 @@ module Fugit
|
|
116
116
|
v = tt.string.downcase
|
117
117
|
|
118
118
|
case k
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
119
|
+
when :numeral_hour
|
120
|
+
[ k, NUMS.index(v) ]
|
121
|
+
when :simple_hour
|
122
|
+
[ k, v.to_i ]
|
123
|
+
when :digital_hour
|
124
|
+
v = v.gsub(/:/, '')
|
125
|
+
[ k, [ v[0, 2], v[2, 2] ] ]
|
126
|
+
when :name_hour
|
127
|
+
[ :digital_hour, NHOURS[v] ]
|
128
|
+
when :name_day
|
129
|
+
[ k, WEEKDAYS.index(v[0, 3]) ]
|
130
|
+
else
|
131
|
+
[ k, v ]
|
132
132
|
end
|
133
133
|
}
|
134
134
|
end
|
data/lib/fugit/parse.rb
CHANGED
@@ -3,13 +3,12 @@ module Fugit
|
|
3
3
|
|
4
4
|
def self.parse_at(s)
|
5
5
|
|
6
|
-
|
6
|
+
::EtOrbi.make_time(s) rescue nil
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.do_parse_at(s)
|
10
10
|
|
11
|
-
|
12
|
-
Time.parse(s)
|
11
|
+
::EtOrbi.make_time(s)
|
13
12
|
end
|
14
13
|
|
15
14
|
def self.parse_cron(s); ::Fugit::Cron.parse(s); end
|
@@ -42,10 +41,10 @@ module Fugit
|
|
42
41
|
def self.determine_type(s)
|
43
42
|
|
44
43
|
case self.parse(s)
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
when ::Fugit::Cron then 'cron'
|
45
|
+
when ::Fugit::Duration then 'in'
|
46
|
+
when ::Time, ::EtOrbi::EoTime then 'at'
|
47
|
+
else nil
|
49
48
|
end
|
50
49
|
end
|
51
50
|
end
|
metadata
CHANGED
@@ -1,41 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fugit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: raabro
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.1
|
19
|
+
version: '1.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.1
|
26
|
+
version: '1.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: et-orbi
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.5
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.5
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - ~>
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '3.4'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - ~>
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '3.4'
|
41
55
|
description: Time tools for flor and the floraison project. Cron parsing and occurence
|
@@ -46,18 +60,18 @@ executables: []
|
|
46
60
|
extensions: []
|
47
61
|
extra_rdoc_files: []
|
48
62
|
files:
|
63
|
+
- CHANGELOG.md
|
64
|
+
- CREDITS.md
|
65
|
+
- LICENSE.txt
|
49
66
|
- Makefile
|
67
|
+
- README.md
|
68
|
+
- fugit.gemspec
|
69
|
+
- lib/fugit.rb
|
50
70
|
- lib/fugit/cron.rb
|
51
71
|
- lib/fugit/duration.rb
|
52
72
|
- lib/fugit/misc.rb
|
53
73
|
- lib/fugit/nat.rb
|
54
74
|
- lib/fugit/parse.rb
|
55
|
-
- lib/fugit.rb
|
56
|
-
- fugit.gemspec
|
57
|
-
- LICENSE.txt
|
58
|
-
- CHANGELOG.md
|
59
|
-
- CREDITS.md
|
60
|
-
- README.md
|
61
75
|
homepage: http://github.com/floraison/fugit
|
62
76
|
licenses:
|
63
77
|
- MIT
|
@@ -68,17 +82,17 @@ require_paths:
|
|
68
82
|
- lib
|
69
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
70
84
|
requirements:
|
71
|
-
- -
|
85
|
+
- - ">="
|
72
86
|
- !ruby/object:Gem::Version
|
73
87
|
version: '0'
|
74
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
89
|
requirements:
|
76
|
-
- -
|
90
|
+
- - ">="
|
77
91
|
- !ruby/object:Gem::Version
|
78
92
|
version: '0'
|
79
93
|
requirements: []
|
80
94
|
rubyforge_project:
|
81
|
-
rubygems_version: 2.
|
95
|
+
rubygems_version: 2.5.2
|
82
96
|
signing_key:
|
83
97
|
specification_version: 4
|
84
98
|
summary: time tools for flor
|