whedon 0.0.1 → 0.0.2

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.
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - 1.8.7
data/README.md CHANGED
@@ -3,7 +3,9 @@
3
3
  The goal of this gem is to parse a crontab timing specification and produce an
4
4
  object that can be queried about the schedule.
5
5
 
6
- This gem began as an extraction of Rufus::CronLine from the rufus-schedule gem.
6
+ This gem began as an extraction of Rufus::CronLine from the [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler) gem.
7
+
8
+ [![Build Status](https://travis-ci.org/bwthomas/whedon.png)](https://travis-ci.org/bwthomas/whedon)
7
9
 
8
10
  ## API example
9
11
 
@@ -27,6 +27,8 @@ require 'tzinfo'
27
27
 
28
28
  module Whedon
29
29
 
30
+ class ParseError < ArgumentError; end
31
+
30
32
  #
31
33
  # A 'cron line' is a line in the sense of a crontab
32
34
  # (man 5 crontab) file line.
@@ -62,7 +64,7 @@ module Whedon
62
64
  @timezone = (TZInfo::Timezone.get(items.last) rescue nil)
63
65
  items.pop if @timezone
64
66
 
65
- raise ArgumentError.new(
67
+ raise ParseError.new(
66
68
  "not a valid cronline : '#{line}'"
67
69
  ) unless items.length == 5 or items.length == 6
68
70
 
@@ -77,7 +79,7 @@ module Whedon
77
79
 
78
80
  [ @seconds, @minutes, @hours, @months ].each do |es|
79
81
 
80
- raise ArgumentError.new(
82
+ raise ParseError.new(
81
83
  "invalid cronline: '#{line}'"
82
84
  ) if es && es.find { |e| ! e.is_a?(Fixnum) }
83
85
  end
@@ -234,7 +236,7 @@ module Whedon
234
236
 
235
237
  if m = it.match(/^(.+)#(l|-?[12345])$/)
236
238
 
237
- raise ArgumentError.new(
239
+ raise ParseError.new(
238
240
  "ranges are not supported for monthdays (#{it})"
239
241
  ) if m[1].index('-')
240
242
 
@@ -247,7 +249,7 @@ module Whedon
247
249
  expr = it.dup
248
250
  WEEKDAYS.each_with_index { |a, i| expr.gsub!(/#{a}/, i.to_s) }
249
251
 
250
- raise ArgumentError.new(
252
+ raise ParseError.new(
251
253
  "invalid weekday expression (#{it})"
252
254
  ) if expr !~ /^0*[0-7](-0*[0-7])?$/
253
255
 
@@ -269,7 +271,7 @@ module Whedon
269
271
 
270
272
  r = item.split(',').map { |i| parse_range(i.strip, min, max) }.flatten
271
273
 
272
- raise ArgumentError.new(
274
+ raise ParseError.new(
273
275
  "found duplicates in #{item.inspect}"
274
276
  ) if raise_error_on_duplicate? && r.uniq.size < r.size
275
277
 
@@ -284,7 +286,7 @@ module Whedon
284
286
 
285
287
  m = item.match(RANGE_REGEX)
286
288
 
287
- raise ArgumentError.new(
289
+ raise ParseError.new(
288
290
  "cannot parse #{item.inspect}"
289
291
  ) unless m
290
292
 
@@ -298,7 +300,7 @@ module Whedon
298
300
  inc = m[3]
299
301
  inc = inc ? inc.to_i : 1
300
302
 
301
- raise ArgumentError.new(
303
+ raise ParseError.new(
302
304
  "#{item.inspect} is not in range #{min}..#{max}"
303
305
  ) if sta < min or edn > max
304
306
 
@@ -1,5 +1,3 @@
1
- module Parse
2
- module Cron
3
- VERSION = "0.0.1"
4
- end
1
+ module Whedon
2
+ VERSION = "0.0.2"
5
3
  end
@@ -59,7 +59,7 @@ describe Whedon::Schedule do
59
59
 
60
60
  it 'rejects invalid cronlines' do
61
61
 
62
- lambda { cl '* nada * * 9' }.should raise_error(ArgumentError)
62
+ lambda { cl '* nada * * 9' }.should raise_error(Whedon::ParseError)
63
63
  end
64
64
 
65
65
  it 'interprets cron strings with TZ correctly' do
@@ -88,7 +88,7 @@ describe Whedon::Schedule do
88
88
 
89
89
  lambda {
90
90
  Whedon::Schedule.new('* * * * sun#1-sun#2')
91
- }.should raise_error(ArgumentError)
91
+ }.should raise_error(Whedon::ParseError)
92
92
  end
93
93
 
94
94
  it 'accepts items with initial 0' do
@@ -110,7 +110,7 @@ describe Whedon::Schedule do
110
110
 
111
111
  it 'raises an error for duplicates when configured to do so' do
112
112
 
113
- lambda { Ex.new('* * L,L * *') }.should raise_error(ArgumentError)
113
+ lambda { Ex.new('* * L,L * *') }.should raise_error(Whedon::ParseError)
114
114
  end
115
115
 
116
116
  it 'interprets cron strings with L correctly' do
@@ -122,22 +122,22 @@ describe Whedon::Schedule do
122
122
 
123
123
  it 'does not support ranges for L' do
124
124
 
125
- lambda { cl '* * 15-L * *'}.should raise_error(ArgumentError)
126
- lambda { cl '* * L/4 * *'}.should raise_error(ArgumentError)
125
+ lambda { cl '* * 15-L * *'}.should raise_error(Whedon::ParseError)
126
+ lambda { cl '* * L/4 * *'}.should raise_error(Whedon::ParseError)
127
127
  end
128
128
 
129
129
  it 'raises if L is used for something else than days' do
130
130
 
131
- lambda { cl '* L * * *'}.should raise_error(ArgumentError)
131
+ lambda { cl '* L * * *'}.should raise_error(Whedon::ParseError)
132
132
  end
133
133
 
134
134
  it 'raises for out of range input' do
135
135
 
136
- lambda { cl '60-62 * * * *'}.should raise_error(ArgumentError)
137
- lambda { cl '62 * * * *'}.should raise_error(ArgumentError)
138
- lambda { cl '60 * * * *'}.should raise_error(ArgumentError)
139
- lambda { cl '* 25-26 * * *'}.should raise_error(ArgumentError)
140
- lambda { cl '* 25 * * *'}.should raise_error(ArgumentError)
136
+ lambda { cl '60-62 * * * *'}.should raise_error(Whedon::ParseError)
137
+ lambda { cl '62 * * * *'}.should raise_error(Whedon::ParseError)
138
+ lambda { cl '60 * * * *'}.should raise_error(Whedon::ParseError)
139
+ lambda { cl '* 25-26 * * *'}.should raise_error(Whedon::ParseError)
140
+ lambda { cl '* 25 * * *'}.should raise_error(Whedon::ParseError)
141
141
  #
142
142
  # as reported by Aimee Rose in
143
143
  # https://github.com/jmettraux/rufus-scheduler/pull/58
data/whedon.gemspec CHANGED
@@ -4,7 +4,7 @@ require "whedon/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "whedon"
7
- s.version = Parse::Cron::VERSION
7
+ s.version = Whedon::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["John Mettraux", "Blake Thomas"]
10
10
  s.email = ["jmettraux@gmail.com", "bwthomas@gmail.com"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whedon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -86,6 +86,7 @@ extra_rdoc_files: []
86
86
  files:
87
87
  - .gitignore
88
88
  - .rspec
89
+ - .travis.yml
89
90
  - Gemfile
90
91
  - README.md
91
92
  - Rakefile