whedon 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6f65fe47d114ba93d1c8a0f2fd0941055aa62e27
4
+ data.tar.gz: 7ffa65c61ac6367d50dbc2418f0059c70d05f4f7
5
+ SHA512:
6
+ metadata.gz: bcf1aace39f9e20ef3a1c8ee99e0b9ed875f3abd1e4d340432fa70eeb30b0d6d3a31220772487ce121d36cf24748056d8d8a4b01febad27919b9f68b41ce7739
7
+ data.tar.gz: 20e0b0e7369ed786356a4bdffd83dad968e620bac366c027bdea62851c48cf53c6f799b79f459fb6a7ec1725d7e9a348348ae2f5faf73c357821065484fcfde8
@@ -0,0 +1,12 @@
1
+ unless ENV['COVERAGE'] == 'false'
2
+ require 'simplecov-rcov'
3
+
4
+ class SimpleCov::Formatter::MergedFormatter
5
+ def format(result)
6
+ SimpleCov::Formatter::HTMLFormatter.new.format(result)
7
+ SimpleCov::Formatter::RcovFormatter.new.format(result)
8
+ end
9
+ end
10
+
11
+ SimpleCov.formatter = SimpleCov::Formatter::MergedFormatter
12
+ end
@@ -1,5 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.4.1
4
+ - 2.3.4
5
+ - 2.2.7
6
+ - 2.1.10
3
7
  - 2.0.0
4
8
  - 1.9.3
5
9
  - 1.8.7
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright 2006-2013 John Mettraux
2
+ Portions copyright 2013 Blake Thomas
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -24,7 +24,21 @@ sch.next("2020/07/01")
24
24
  # Given date/time matches cron string
25
25
  sch.matches?("2020/07/01 14:00:00")
26
26
 
27
+ # Time.now matches cron string
28
+ sch.now?
29
+
27
30
  # Give cron string represented as an array
28
31
  # [seconds minutes hours days months weekdays monthdays timezone]
29
32
  sch.to_a
30
33
  ```
34
+
35
+ ## And ... the Name?
36
+
37
+ Why 'whedon' ? First, [when](http://rubygems.org/gems/when) was taken. I was
38
+ considering variations on 'when do', & it occurred to me that 'whedon' (a la
39
+ [Joss Whedon](http://en.wikipedia.org/wiki/Joss_Whedon)) was an obvious anagram
40
+ of 'when do'. The pun regarding Whedon::Schedule being that Joss Whedon's
41
+ television series tend to get pulled from the network schedule.
42
+
43
+ ## License
44
+ [MIT](http://opensource.org/licenses/MIT). See [LICENSE](LICENSE).
@@ -1,27 +1,3 @@
1
- #--
2
- # Copyright (c) 2006-2013, John Mettraux, jmettraux@gmail.com
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy
5
- # of this software and associated documentation files (the "Software"), to deal
6
- # in the Software without restriction, including without limitation the rights
7
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- # copies of the Software, and to permit persons to whom the Software is
9
- # furnished to do so, subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in
12
- # all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- # THE SOFTWARE.
21
- #
22
- # Made in Japan.
23
- #++
24
-
25
1
  require 'tzinfo'
26
2
 
27
3
 
@@ -81,13 +57,13 @@ module Whedon
81
57
 
82
58
  raise ParseError.new(
83
59
  "invalid cronline: '#{line}'"
84
- ) if es && es.find { |e| ! e.is_a?(Fixnum) }
60
+ ) if es && es.find { |e| ! e.is_a?(Integer) }
85
61
  end
86
62
  end
87
63
 
88
64
  # Returns true if the given time matches this cron line.
89
65
  #
90
- def matches?(time)
66
+ def matches?(time=Time.now)
91
67
 
92
68
  time = as_time(time)
93
69
 
@@ -97,10 +73,7 @@ module Whedon
97
73
  return false unless date_match?(time)
98
74
  true
99
75
  end
100
-
101
- def now?(time=Time.now)
102
- matches?(time)
103
- end
76
+ alias_method :now?, :matches?
104
77
 
105
78
  # Returns the next time that this cron line is supposed to 'fire'
106
79
  #
@@ -1,3 +1,3 @@
1
1
  module Whedon
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,3 +1,16 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start do
4
+ add_filter "vendor"
5
+ add_filter "spec"
6
+ end
7
+
8
+ RSpec.configure do |config|
9
+ config.expect_with :rspec do |c|
10
+ c.syntax = [:should, :expect]
11
+ end
12
+ end
13
+
1
14
  require File.expand_path("../../lib/whedon", __FILE__)
2
15
 
3
16
  class Ex < Whedon::Schedule
@@ -21,5 +34,5 @@ def cl(line)
21
34
  end
22
35
 
23
36
  def compare(line, array)
24
- cl(line).to_array.should == array
37
+ expect(cl(line).to_array).to eq(array)
25
38
  end
@@ -49,12 +49,12 @@ describe Whedon::Schedule do
49
49
 
50
50
  it 'rejects invalid weekday expressions' do
51
51
 
52
- lambda { cl '0 17 * * MON_FRI' }.should raise_error
52
+ lambda { cl '0 17 * * MON_FRI' }.should raise_error(Whedon::ParseError)
53
53
  # underline instead of dash
54
54
 
55
- lambda { cl '* * * * 9' }.should raise_error
56
- lambda { cl '* * * * 0-12' }.should raise_error
57
- lambda { cl '* * * * BLABLA' }.should raise_error
55
+ lambda { cl '* * * * 9' }.should raise_error(Whedon::ParseError)
56
+ lambda { cl '* * * * 0-12' }.should raise_error(Whedon::ParseError)
57
+ lambda { cl '* * * * BLABLA' }.should raise_error(Whedon::ParseError)
58
58
  end
59
59
 
60
60
  it 'rejects invalid cronlines' do
@@ -67,8 +67,8 @@ describe Whedon::Schedule do
67
67
  compare '* * * * * EST', [ [0], nil, nil, nil, nil, nil, nil, 'EST' ]
68
68
  compare '* * * * * * EST', [ nil, nil, nil, nil, nil, nil, nil, 'EST' ]
69
69
 
70
- lambda { cl '* * * * * NotATimeZone' }.should raise_error
71
- lambda { cl '* * * * * * NotATimeZone' }.should raise_error
70
+ lambda { cl '* * * * * NotATimeZone' }.should raise_error(Whedon::ParseError)
71
+ lambda { cl '* * * * * * NotATimeZone' }.should raise_error(Whedon::ParseError)
72
72
  end
73
73
 
74
74
  it 'interprets cron strings with / (slashes) correctly' do
@@ -296,6 +296,13 @@ describe Whedon::Schedule do
296
296
 
297
297
  describe '#matches?' do
298
298
 
299
+ it 'accepts epoch time' do
300
+ cl('* * * * *').matches?(Time.at(0)).should be true
301
+ end
302
+
303
+ it 'accepts a time string' do
304
+ cl('* * * * *').matches?('1969-12-31 18:00:00 -0600').should be true
305
+ end
299
306
 
300
307
  [ ['* * * * *', utc(1970, 1, 1, 0, 1), true],
301
308
  ['* * * * sun', utc(1970, 1, 4), true],
@@ -343,22 +350,22 @@ describe Whedon::Schedule do
343
350
 
344
351
  it 'matches correctly when there is a sun#2 involved' do
345
352
 
346
- cl('* * 13 * fri#2').matches?(utc(1970, 2, 13)).should be_true
347
- cl('* * 13 * fri#2').matches?(utc(1970, 2, 20)).should be_false
353
+ cl('* * 13 * fri#2').matches?(utc(1970, 2, 13)).should be true
354
+ cl('* * 13 * fri#2').matches?(utc(1970, 2, 20)).should be false
348
355
  end
349
356
 
350
357
  it 'matches correctly when there is a L involved' do
351
358
 
352
- cl('* * L * *').matches?(utc(1970, 1, 31)).should be_true
353
- cl('* * L * *').matches?(utc(1970, 1, 30)).should be_false
359
+ cl('* * L * *').matches?(utc(1970, 1, 31)).should be true
360
+ cl('* * L * *').matches?(utc(1970, 1, 30)).should be false
354
361
  end
355
362
 
356
363
  it 'matches correctly when there is a sun#2,sun#3 involved' do
357
364
 
358
- cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 4) ).should be_false
359
- cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 11) ).should be_true
360
- cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 18) ).should be_true
361
- cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 25) ).should be_false
365
+ cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 4) ).should be false
366
+ cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 11) ).should be true
367
+ cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 18) ).should be true
368
+ cl('* * * * sun#2,sun#3').matches?( local(1970, 1, 25) ).should be false
362
369
  end
363
370
  end
364
371
 
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "https://github.com/bwthomas/whedon"
12
12
  s.summary = %q{Parses cron lines}
13
13
  s.description = %q{Parses cron lines into a Schedule instance that can be queried.}
14
+ s.license = 'MIT'
14
15
 
15
16
  s.rubyforge_project = "whedon"
16
17
 
@@ -21,7 +22,9 @@ Gem::Specification.new do |s|
21
22
 
22
23
  s.add_dependency 'tzinfo'
23
24
 
24
- s.add_development_dependency 'rspec', '~>2.6.0'
25
+ s.add_development_dependency 'rspec', '~>3.5.0'
26
+ s.add_development_dependency 'simplecov'
27
+ s.add_development_dependency 'simplecov-rcov'
25
28
  s.add_development_dependency 'rake'
26
29
  s.add_development_dependency 'pry'
27
30
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whedon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - John Mettraux
@@ -10,70 +9,90 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-06-30 00:00:00.000000000 Z
12
+ date: 2018-02-20 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: tzinfo
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - ">="
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - ">="
29
26
  - !ruby/object:Gem::Version
30
27
  version: '0'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rspec
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ~>
32
+ - - "~>"
37
33
  - !ruby/object:Gem::Version
38
- version: 2.6.0
34
+ version: 3.5.0
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ~>
39
+ - - "~>"
45
40
  - !ruby/object:Gem::Version
46
- version: 2.6.0
41
+ version: 3.5.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: simplecov
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: simplecov-rcov
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
47
70
  - !ruby/object:Gem::Dependency
48
71
  name: rake
49
72
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
73
  requirements:
52
- - - ! '>='
74
+ - - ">="
53
75
  - !ruby/object:Gem::Version
54
76
  version: '0'
55
77
  type: :development
56
78
  prerelease: false
57
79
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
80
  requirements:
60
- - - ! '>='
81
+ - - ">="
61
82
  - !ruby/object:Gem::Version
62
83
  version: '0'
63
84
  - !ruby/object:Gem::Dependency
64
85
  name: pry
65
86
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
87
  requirements:
68
- - - ! '>='
88
+ - - ">="
69
89
  - !ruby/object:Gem::Version
70
90
  version: '0'
71
91
  type: :development
72
92
  prerelease: false
73
93
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
94
  requirements:
76
- - - ! '>='
95
+ - - ">="
77
96
  - !ruby/object:Gem::Version
78
97
  version: '0'
79
98
  description: Parses cron lines into a Schedule instance that can be queried.
@@ -84,10 +103,12 @@ executables: []
84
103
  extensions: []
85
104
  extra_rdoc_files: []
86
105
  files:
87
- - .gitignore
88
- - .rspec
89
- - .travis.yml
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - ".simplecov"
109
+ - ".travis.yml"
90
110
  - Gemfile
111
+ - LICENSE
91
112
  - README.md
92
113
  - Rakefile
93
114
  - lib/whedon.rb
@@ -97,30 +118,29 @@ files:
97
118
  - spec/whedon/schedule_spec.rb
98
119
  - whedon.gemspec
99
120
  homepage: https://github.com/bwthomas/whedon
100
- licenses: []
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
101
124
  post_install_message:
102
125
  rdoc_options: []
103
126
  require_paths:
104
127
  - lib
105
128
  required_ruby_version: !ruby/object:Gem::Requirement
106
- none: false
107
129
  requirements:
108
- - - ! '>='
130
+ - - ">="
109
131
  - !ruby/object:Gem::Version
110
132
  version: '0'
111
133
  required_rubygems_version: !ruby/object:Gem::Requirement
112
- none: false
113
134
  requirements:
114
- - - ! '>='
135
+ - - ">="
115
136
  - !ruby/object:Gem::Version
116
137
  version: '0'
117
138
  requirements: []
118
139
  rubyforge_project: whedon
119
- rubygems_version: 1.8.23
140
+ rubygems_version: 2.6.11
120
141
  signing_key:
121
- specification_version: 3
142
+ specification_version: 4
122
143
  summary: Parses cron lines
123
144
  test_files:
124
145
  - spec/spec_helper.rb
125
146
  - spec/whedon/schedule_spec.rb
126
- has_rdoc: