module CIMI::Helpers::SelectResourceMethods

Public Instance Methods

select_by(filter_opts) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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