ice_cube 0.7.6 → 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,28 @@
1
+ module Deprecated
2
+
3
+ # Define a deprecated alias for a method
4
+ # @param [Symbol] name - name of method to define
5
+ # @param [Symbol] replacement - name of method to replace (alias)
6
+ def deprecated_alias(name, replacement)
7
+ # Create a wrapped version
8
+ define_method(name) do |*args, &block|
9
+ warn "IceCube: ##{name} deprecated (please use ##{replacement})"
10
+ send replacement, *args, &block
11
+ end
12
+ end
13
+
14
+ # Deprecate a defined method
15
+ # @param [Symbol] name - name of deprecated method
16
+ # @param [Symbol] replacement - name of the desired replacement
17
+ def deprecated(name, replacement)
18
+ # Replace old method
19
+ old_name = :"#{name}_without_deprecation"
20
+ alias_method old_name, name
21
+ # And replace it with a wrapped version
22
+ define_method(name) do |*args, &block|
23
+ warn "IceCube: ##{name} deprecated (please use ##{replacement})"
24
+ send old_name, *args, &block
25
+ end
26
+ end
27
+
28
+ end
data/lib/ice_cube/rule.rb CHANGED
@@ -30,12 +30,12 @@ module IceCube
30
30
 
31
31
  # Yaml implementation
32
32
  def to_yaml(*args)
33
- defined?(Psych) ? Psych::dump(to_hash) : YAML::dump(to_hash, *args)
33
+ IceCube::use_psych? ? Psych::dump(to_hash) : YAML::dump(to_hash, *args)
34
34
  end
35
35
 
36
36
  # From yaml
37
37
  def self.from_yaml(yaml)
38
- from_hash defined?(Psych) ? Psych::load(yaml) : YAML::load(yaml)
38
+ from_hash IceCube::use_psych? ? Psych::load(yaml) : YAML::load(yaml)
39
39
  end
40
40
 
41
41
  # Expected to be overridden by subclasses
@@ -4,17 +4,20 @@ module IceCube
4
4
 
5
5
  class Schedule
6
6
 
7
+ extend ::Deprecated
8
+
7
9
  # Get the start time
8
10
  attr_accessor :start_time
9
- alias :start_date :start_time
10
- alias :start_date= :start_time=
11
+ deprecated_alias :start_date, :start_time
12
+ deprecated_alias :start_date=, :start_time=
11
13
 
12
14
  # Get the duration
13
15
  attr_accessor :duration
14
16
 
15
17
  # Get the end time
16
18
  attr_accessor :end_time
17
- alias :end_date :end_time
19
+ deprecated_alias :end_date, :end_time
20
+ deprecated_alias :end_date=, :end_time=
18
21
 
19
22
  # Create a new schedule
20
23
  def initialize(start_time = nil, options = {})
@@ -32,8 +35,9 @@ module IceCube
32
35
  add_recurrence_rule rule
33
36
  time
34
37
  end
35
- alias :rdate :add_recurrence_time
36
- alias :add_recurrence_date :add_recurrence_time
38
+ alias :rtime :add_recurrence_time
39
+ deprecated_alias :rdate, :rtime
40
+ deprecated_alias :add_recurrence_date, :add_recurrence_time
37
41
 
38
42
  # Add an exception time to the schedule
39
43
  def add_exception_time(time)
@@ -42,8 +46,9 @@ module IceCube
42
46
  add_exception_rule rule
43
47
  time
44
48
  end
45
- alias :exdate :add_exception_time
46
- alias :add_exception_date :add_exception_time
49
+ alias :extime :add_exception_time
50
+ deprecated_alias :exdate, :extime
51
+ deprecated_alias :add_exception_date, :add_exception_time
47
52
 
48
53
  # Add a recurrence rule to the schedule
49
54
  def add_recurrence_rule(rule)
@@ -85,8 +90,9 @@ module IceCube
85
90
  def recurrence_times
86
91
  @all_recurrence_rules.select { |r| r.is_a?(SingleOccurrenceRule) }.map(&:time)
87
92
  end
88
- alias :rdates :recurrence_times
89
- alias :recurrence_dates :recurrence_times
93
+ alias :rtimes :recurrence_times
94
+ deprecated_alias :rdates, :rtimes
95
+ deprecated_alias :recurrence_dates, :recurrence_times
90
96
 
91
97
  # Remove a recurrence time
92
98
  def remove_recurrence_time(time)
@@ -96,15 +102,17 @@ module IceCube
96
102
  end
97
103
  time if found
98
104
  end
99
- alias :remove_recurrence_date :remove_recurrence_time
100
- alias :remove_rdate :remove_recurrence_time
105
+ alias :remove_rtime :remove_recurrence_time
106
+ deprecated_alias :remove_recurrence_date, :remove_recurrence_time
107
+ deprecated_alias :remove_rdate, :remove_rtime
101
108
 
102
109
  # Get the exception times that are on the schedule
103
110
  def exception_times
104
111
  @all_exception_rules.select { |r| r.is_a?(SingleOccurrenceRule) }.map(&:time)
105
112
  end
106
- alias :exdates :exception_times
107
- alias :exception_dates :exception_times
113
+ alias :extimes :exception_times
114
+ deprecated_alias :exdates, :extimes
115
+ deprecated_alias :exception_dates, :exception_times
108
116
 
109
117
  # Remove an exception time
110
118
  def remove_exception_time(time)
@@ -114,8 +122,9 @@ module IceCube
114
122
  end
115
123
  time if found
116
124
  end
117
- alias :remove_exception_date :remove_exception_time
118
- alias :remove_exdate :remove_exception_time
125
+ alias :remove_extime :remove_exception_time
126
+ deprecated_alias :remove_exception_date, :remove_exception_time
127
+ deprecated_alias :remove_exdate, :remove_extime
119
128
 
120
129
  # Get all of the occurrences from the start_time up until a
121
130
  # given Time
@@ -253,12 +262,12 @@ module IceCube
253
262
 
254
263
  # Convert the schedule to yaml
255
264
  def to_yaml(*args)
256
- defined?(Psych) ? Psych::dump(to_hash, *args) : YAML::dump(to_hash, *args)
265
+ IceCube::use_psych? ? Psych::dump(to_hash, *args) : YAML::dump(to_hash, *args)
257
266
  end
258
267
 
259
268
  # Load the schedule from yaml
260
269
  def self.from_yaml(yaml, options = {})
261
- from_hash defined?(Psych) ? Psych::load(yaml) : YAML::load(yaml), options
270
+ from_hash IceCube::use_psych? ? Psych::load(yaml) : YAML::load(yaml), options
262
271
  end
263
272
 
264
273
  # Convert the schedule to a hash
@@ -25,7 +25,7 @@ module IceCube
25
25
  end
26
26
 
27
27
  def build_s(builder)
28
- builder.piece(:day) << "#{Date::DAYNAMES[day]}s"
28
+ builder.piece(:day) << day
29
29
  end
30
30
 
31
31
  def build_hash(builder)
@@ -44,8 +44,18 @@ module IceCube
44
44
  :wday
45
45
  end
46
46
 
47
- StringBuilder.register_formatter(:day) do |segments|
48
- "on #{StringBuilder.sentence(segments)}"
47
+ StringBuilder.register_formatter(:day) do |validation_days|
48
+ # sort the days
49
+ validation_days.sort!
50
+ # pick the right shortening, if applicable
51
+ if validation_days == [0, 6]
52
+ 'on Weekends'
53
+ elsif validation_days == (1..5).to_a
54
+ 'on Weekdays'
55
+ else
56
+ segments = validation_days.map { |d| "#{Date::DAYNAMES[d]}s" }
57
+ "on #{StringBuilder.sentence(segments)}"
58
+ end
49
59
  end
50
60
 
51
61
  end
@@ -2,11 +2,13 @@ module IceCube
2
2
 
3
3
  module Validations::Until
4
4
 
5
+ extend ::Deprecated
6
+
5
7
  # accessor
6
8
  def until_time
7
9
  @until
8
10
  end
9
- alias :until_date :until_time
11
+ deprecated_alias :until_date, :until_time
10
12
 
11
13
  def until(time)
12
14
  @until = time
@@ -1,5 +1,5 @@
1
1
  module IceCube
2
2
 
3
- VERSION = '0.7.6'
3
+ VERSION = '0.7.7'
4
4
 
5
5
  end
data/lib/ice_cube.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'date'
2
+ require 'ice_cube/deprecated'
2
3
 
3
4
  # Use psych if we can
4
5
  begin
@@ -71,4 +72,8 @@ module IceCube
71
72
  # Formatting
72
73
  TO_S_TIME_FORMAT = '%B %e, %Y'
73
74
 
75
+ def self.use_psych?
76
+ @use_psych ||= defined?(Psych) && Psych::VERSION
77
+ end
78
+
74
79
  end
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,11 @@
1
- require File.dirname(__FILE__) + '/../lib/ice_cube'
2
-
3
1
  begin
4
- require 'cover_me'
5
- # https://github.com/markbates/cover_me/issues/50
6
- at_exit do
7
- CoverMe.complete!
8
- end
2
+ require 'simplecov'
3
+ SimpleCov.start
9
4
  rescue LoadError
5
+ # okay
10
6
  end
11
7
 
8
+ require File.dirname(__FILE__) + '/../lib/ice_cube'
9
+
12
10
  DAY = Time.utc(2010, 3, 1)
13
11
  WEDNESDAY = Time.utc(2010, 6, 23, 5, 0, 0)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ice_cube
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-01 00:00:00.000000000Z
12
+ date: 2012-02-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &20210700 !ruby/object:Gem::Requirement
16
+ requirement: &2153297040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *20210700
24
+ version_requirements: *2153297040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: active_support
27
- requirement: &20210140 !ruby/object:Gem::Requirement
27
+ requirement: &2153296340 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *20210140
35
+ version_requirements: *2153296340
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: tzinfo
38
- requirement: &20209560 !ruby/object:Gem::Requirement
38
+ requirement: &2153295880 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *20209560
46
+ version_requirements: *2153295880
47
47
  description: ice_cube is a recurring date library for Ruby. It allows for quick,
48
48
  programatic expansion of recurring date rules.
49
49
  email: john@crepezzi.com
@@ -51,43 +51,44 @@ executables: []
51
51
  extensions: []
52
52
  extra_rdoc_files: []
53
53
  files:
54
- - lib/ice_cube/single_occurrence_rule.rb
54
+ - lib/ice_cube/builders/hash_builder.rb
55
+ - lib/ice_cube/builders/ical_builder.rb
56
+ - lib/ice_cube/builders/string_builder.rb
57
+ - lib/ice_cube/deprecated.rb
58
+ - lib/ice_cube/errors/count_exceeded.rb
59
+ - lib/ice_cube/errors/until_exceeded.rb
60
+ - lib/ice_cube/rule.rb
61
+ - lib/ice_cube/rules/daily_rule.rb
62
+ - lib/ice_cube/rules/hourly_rule.rb
63
+ - lib/ice_cube/rules/minutely_rule.rb
64
+ - lib/ice_cube/rules/monthly_rule.rb
65
+ - lib/ice_cube/rules/secondly_rule.rb
66
+ - lib/ice_cube/rules/weekly_rule.rb
67
+ - lib/ice_cube/rules/yearly_rule.rb
55
68
  - lib/ice_cube/schedule.rb
56
- - lib/ice_cube/version.rb
69
+ - lib/ice_cube/single_occurrence_rule.rb
57
70
  - lib/ice_cube/time_util.rb
58
- - lib/ice_cube/validations/minute_of_hour.rb
59
- - lib/ice_cube/validations/secondly_interval.rb
71
+ - lib/ice_cube/validated_rule.rb
72
+ - lib/ice_cube/validations/count.rb
73
+ - lib/ice_cube/validations/daily_interval.rb
74
+ - lib/ice_cube/validations/day.rb
75
+ - lib/ice_cube/validations/day_of_month.rb
60
76
  - lib/ice_cube/validations/day_of_week.rb
77
+ - lib/ice_cube/validations/day_of_year.rb
78
+ - lib/ice_cube/validations/hour_of_day.rb
61
79
  - lib/ice_cube/validations/hourly_interval.rb
62
- - lib/ice_cube/validations/minutely_interval.rb
63
80
  - lib/ice_cube/validations/lock.rb
81
+ - lib/ice_cube/validations/minute_of_hour.rb
82
+ - lib/ice_cube/validations/minutely_interval.rb
64
83
  - lib/ice_cube/validations/month_of_year.rb
65
- - lib/ice_cube/validations/yearly_interval.rb
66
- - lib/ice_cube/validations/schedule_lock.rb
67
- - lib/ice_cube/validations/hour_of_day.rb
68
- - lib/ice_cube/validations/until.rb
69
84
  - lib/ice_cube/validations/monthly_interval.rb
70
- - lib/ice_cube/validations/day_of_year.rb
71
- - lib/ice_cube/validations/day_of_month.rb
85
+ - lib/ice_cube/validations/schedule_lock.rb
72
86
  - lib/ice_cube/validations/second_of_minute.rb
87
+ - lib/ice_cube/validations/secondly_interval.rb
88
+ - lib/ice_cube/validations/until.rb
73
89
  - lib/ice_cube/validations/weekly_interval.rb
74
- - lib/ice_cube/validations/daily_interval.rb
75
- - lib/ice_cube/validations/count.rb
76
- - lib/ice_cube/validations/day.rb
77
- - lib/ice_cube/rules/hourly_rule.rb
78
- - lib/ice_cube/rules/minutely_rule.rb
79
- - lib/ice_cube/rules/yearly_rule.rb
80
- - lib/ice_cube/rules/secondly_rule.rb
81
- - lib/ice_cube/rules/weekly_rule.rb
82
- - lib/ice_cube/rules/daily_rule.rb
83
- - lib/ice_cube/rules/monthly_rule.rb
84
- - lib/ice_cube/errors/until_exceeded.rb
85
- - lib/ice_cube/errors/count_exceeded.rb
86
- - lib/ice_cube/rule.rb
87
- - lib/ice_cube/validated_rule.rb
88
- - lib/ice_cube/builders/ical_builder.rb
89
- - lib/ice_cube/builders/string_builder.rb
90
- - lib/ice_cube/builders/hash_builder.rb
90
+ - lib/ice_cube/validations/yearly_interval.rb
91
+ - lib/ice_cube/version.rb
91
92
  - lib/ice_cube.rb
92
93
  - spec/spec_helper.rb
93
94
  homepage: http://seejohnrun.github.com/ice_cube/
@@ -110,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
111
  version: '0'
111
112
  requirements: []
112
113
  rubyforge_project: ice-cube
113
- rubygems_version: 1.8.10
114
+ rubygems_version: 1.8.15
114
115
  signing_key:
115
116
  specification_version: 3
116
117
  summary: Ruby Date Recurrence Library