Module: CIMI::Helpers::SelectResourceMethods
- Included in:
- Model::Resource
- Defined in:
- lib/cimi/helpers/select_helper.rb
Instance Method Summary collapse
- #select_by(filter_opts) ⇒ Object
- #select_by_arr_index(attr, filter) ⇒ Object
- #select_by_arr_range(attr, filter) ⇒ Object
Instance Method Details
#select_by(filter_opts) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/cimi/helpers/select_helper.rb', line 20 def select_by(filter_opts) return self if filter_opts.nil? return self unless kind_of? CIMI::Model::Collection if filter_opts.include? ',' return select_attributes(filter_opts.split(',').map{ |a| a.intern }) end case filter_opts when /^([\w\_]+)$/ then select_attributes([$1.intern]) when /^([\w\_]+)\[(\d+\-\d+)\]$/ then select_by_arr_range($1.intern, $2) when /^([\w\_]+)\[(\d+)\]$/ then select_by_arr_index($1.intern, $2) else self end end |
#select_by_arr_index(attr, filter) ⇒ Object
34 35 36 37 |
# File 'lib/cimi/helpers/select_helper.rb', line 34 def select_by_arr_index(attr, filter) return self unless self.respond_to?(attr) self.class.new(attr => [self.send(attr)[filter.to_i]]) end |
#select_by_arr_range(attr, filter) ⇒ Object
39 40 41 42 43 |
# File 'lib/cimi/helpers/select_helper.rb', line 39 def select_by_arr_range(attr, filter) return self unless self.respond_to?(attr) filter = filter.split('-').inject { |s,e| s.to_i..e.to_i } self.class.new(attr => self.send(attr)[filter]) end |