event_cal 1.3.0 → 2.0.0

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.
@@ -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