event_cal 1.3.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  require 'event_cal/event'
2
2
 
3
3
  class EventCal::Calendar
4
- attr_accessor :base_date, :start_on, :end_on, :events, :owner
4
+ attr_accessor :base_date, :start_on, :end_on, :events, :owner, :priority_events, :only_events, :except_events
5
5
 
6
6
  def initialize(date = Date.today, options = {} )
7
7
  parse_initializer_arguments(date, options)
@@ -17,7 +17,20 @@ class EventCal::Calendar
17
17
  end
18
18
 
19
19
  def fetch_events
20
- @events = ::EventCal::Event.subclasses.map { |klass|
20
+
21
+ subclasses = if @only_events.present?
22
+ if @priority_events.present?
23
+ @priority_events & @only_events
24
+ else
25
+ @only_events
26
+ end
27
+ elsif @except_events.present?
28
+ (@priority_events | ::EventCal::Event.subclasses) - @except_events
29
+ else
30
+ @priority_events | ::EventCal::Event.subclasses
31
+ end
32
+
33
+ @events = subclasses.map { |klass|
21
34
  klass.fetch_events(self)
22
35
  }.flatten
23
36
  end
@@ -44,11 +57,24 @@ class EventCal::Calendar
44
57
  end
45
58
 
46
59
  opts.each do |key, value|
47
- if key == :owner
60
+ case key
61
+ when :owner
48
62
  @owner = value
49
- else
50
- #ignore other keys
63
+ when :priority_events
64
+ @priority_events = value
65
+ when :only_events
66
+ @only_events = value
67
+ when :except_events
68
+ @except_events = value
51
69
  end
52
70
  end
71
+
72
+ if @only_events.present? & @except_events.present?
73
+ raise ArgumentError.new("initializing EventCal::Calendar : you passed :only_events and :except_events at once !")
74
+ end
75
+
76
+ @priority_events = [] if @priority_events.nil?
77
+ @only_events = [] if @only_events.nil?
78
+ @except_events = [] if @except_events.nil?
53
79
  end
54
80
  end
@@ -1,3 +1,3 @@
1
1
  module EventCal
2
- VERSION = "1.3.0"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event_cal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -257,7 +257,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
257
257
  version: '0'
258
258
  segments:
259
259
  - 0
260
- hash: 3055257193317479361
260
+ hash: -2032213371060263587
261
261
  required_rubygems_version: !ruby/object:Gem::Requirement
262
262
  none: false
263
263
  requirements:
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
266
  version: '0'
267
267
  segments:
268
268
  - 0
269
- hash: 3055257193317479361
269
+ hash: -2032213371060263587
270
270
  requirements: []
271
271
  rubyforge_project:
272
272
  rubygems_version: 1.8.24