diff --git a/README.md b/README.md index 5018d52..c068ec9 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,9 @@ my_calendar_name: operator: matches # match against regex pattern val: # array of values also supported - '/Team A/i' + - field: blocking # blocking (TRANSP) field supported + operator: equals + val: true # true will filter out non-blocking events alarms: # (optional) create/clear alarms for filtered events clear_existing: true # (optional) if true, existing alarms will be removed, default: false triggers: # (optional) triggers for new alarms. Description will be the alarm summary, action is 'DISPLAY' diff --git a/config.yml.example b/config.yml.example index 5c3c413..bee591a 100644 --- a/config.yml.example +++ b/config.yml.example @@ -5,6 +5,9 @@ rota: - field: start_time operator: equals val: '09:00' + - field: blocking + operator: equals + val: true alarms: clear_existing: true triggers: diff --git a/lib/ical_filter_proxy/filterable_event_adapter.rb b/lib/ical_filter_proxy/filterable_event_adapter.rb index a4c9a09..74e0dfc 100644 --- a/lib/ical_filter_proxy/filterable_event_adapter.rb +++ b/lib/ical_filter_proxy/filterable_event_adapter.rb @@ -44,6 +44,11 @@ def end_components @end_components ||= DateComponents.new(dtend, options[:timezone]) end + # extract and rename TRANSP field to something more obvious + def blocking + raw_event.transp == 'OPAQUE' || raw_event.transp.nil? + end + def method_missing(method_sym, *args, &block) if method_sym.to_s =~ /(start|end)\_(\w+)/ components = self.send("#{$1}_components") diff --git a/spec/filterable_event_adapter_spec.rb b/spec/filterable_event_adapter_spec.rb index 6f782ea..39c7514 100644 --- a/spec/filterable_event_adapter_spec.rb +++ b/spec/filterable_event_adapter_spec.rb @@ -87,4 +87,24 @@ expect(adapter.end_date).to eq('2017-06-30') end end + + describe '#blocking' do + it 'returns true if transp is OPAQUE' do + test_event.transp = 'OPAQUE' + adapter = described_class.new(test_event) + expect(adapter.blocking).to be true + end + + it 'returns false if transp is TRANSPARENT' do + test_event.transp = 'TRANSPARENT' + adapter = described_class.new(test_event) + expect(adapter.blocking).to be false + end + + it 'returns true if transp is nil (default)' do + test_event.transp = nil + adapter = described_class.new(test_event) + expect(adapter.blocking).to be true + end + end end