class BingSearch::Model

Public Class Methods

new(attrs = {}) click to toggle source

@param [Hash] attrs

# File lib/bing-search/models.rb, line 5
def initialize(attrs = {})
  attrs.each do |k, v|
    public_send "#{k}=", v
  end
end

Private Class Methods

attr_methods() click to toggle source
# File lib/bing-search/models.rb, line 30
def self.attr_methods
  @attr_methods ||= model_ancestors.reduce([]) do |memo, class_|
    memo + class_.public_instance_methods(false)
  end
end
model_ancestors() click to toggle source
# File lib/bing-search/models.rb, line 36
def self.model_ancestors
  ancestors.select { |ancestor| ancestor < Model }
end

Public Instance Methods

set(attr, value) click to toggle source

Sets an attribute via a public instance method on the receiver or its ancestors up to but not including Object @param [Symbol] attr @param value @return [self] @raise [ArgumentError]

No public setter for +attr+ on the receiver or its ancestors up to
Object
# File lib/bing-search/models.rb, line 20
def set(attr, value)
  setter = "#{attr}=".to_sym

  self.class.attr_methods.include?(setter) ?
    public_send(setter, value) :
    raise(ArgumentError, "Can't set attr #{attr} of #{self}")
end