Module: CIMI::Helpers::SelectResourceMethods

Included in:
Model::Resource
Defined in:
lib/cimi/helpers/select_helper.rb

Instance Method Summary collapse

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