Module: SimpleAMS::Options::Concerns::Filterable
- Defined in:
- lib/simple_ams/options/concerns/filterable.rb
Overview
works for arrays that can hold either elements or object that respond_to? :name
Instance Method Summary collapse
-
#&(other_filterables) ⇒ Object
for optimizing performance, ask only the first element other idea is to create another module just for (Name)ValueHash objects.
-
#include?(member) ⇒ Boolean
for optimizing performance, ask only the first element of self and save it as state.
- #raw ⇒ Object
Instance Method Details
#&(other_filterables) ⇒ Object
for optimizing performance, ask only the first element other idea is to create another module just for (Name)ValueHash objects
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/simple_ams/options/concerns/filterable.rb', line 9 def &(other_filterables) other_is_object = other_filterables[0].respond_to?(:name) return self.class.new( self.select{|m| if other_is_object other_filterables.include?(m.name) else other_filterables.include?(m) end } ) end |
#include?(member) ⇒ Boolean
for optimizing performance, ask only the first element of self and save it as state
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/simple_ams/options/concerns/filterable.rb', line 24 def include?(member) unless defined?(@self_is_object) @self_is_object = self[0].respond_to?(:name) end if @self_is_object self.any?{|s| s.name == member} else super end end |
#raw ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/simple_ams/options/concerns/filterable.rb', line 36 def raw if self[0].respond_to?(:raw) self.map(&:raw) else self.map{|i| i} end end |