class Trello::BasicData

Attributes

client[W]

Public Class Methods

client() click to toggle source
# File lib/trello/basic_data.rb, line 102
def self.client
  Trello.client
end
create(options) click to toggle source
# File lib/trello/basic_data.rb, line 20
def create(options)
  client.create(path_name, options)
end
find(id, params = {}) click to toggle source
# File lib/trello/basic_data.rb, line 16
def find(id, params = {})
  client.find(path_name, id, params)
end
many(name, opts = {}) click to toggle source
# File lib/trello/basic_data.rb, line 87
def self.many(name, opts = {})
  class_eval do
    define_method(:"#{name}") do |*args|
      options   = opts.dup
      resource  = options.delete(:in)  || self.class.to_s.split("::").last.downcase.pluralize
      klass     = options.delete(:via) || Trello.const_get(name.to_s.singularize.camelize)
      path = options.delete(:path) || name
      params    = options.merge(args[0] || {})

      resources = client.find_many(klass, "/#{resource}/#{id}/#{path}", params)
      MultiAssociation.new(self, resources).proxy
    end
  end
end
new(fields = {}) click to toggle source
# File lib/trello/basic_data.rb, line 110
def initialize(fields = {})
  update_fields(fields)
end
one(name, opts = {}) click to toggle source
# File lib/trello/basic_data.rb, line 70
def self.one(name, opts = {})
  class_eval do
    define_method(:"#{name}") do |*args|
      options = opts.dup
      klass   = options.delete(:via) || Trello.const_get(name.to_s.camelize)
      ident   = options.delete(:using) || :id
      path    = options.delete(:path)

      if path
        client.find(path, self.send(ident))
      else
        klass.find(self.send(ident))
      end
    end
  end
end
parse(response) { |basic_data| ... } click to toggle source
# File lib/trello/basic_data.rb, line 30
def parse(response)
  from_response(response).tap do |basic_data|
    yield basic_data if block_given?
  end
end
parse_many(response) { |d| ... } click to toggle source
# File lib/trello/basic_data.rb, line 36
def parse_many(response)
  from_response(response).map do |data|
    data.tap do |d|
      yield d if block_given?
    end
  end
end
path_name() click to toggle source
# File lib/trello/basic_data.rb, line 12
def path_name
  name.split("::").last.underscore
end
register_attributes(*names) click to toggle source
# File lib/trello/basic_data.rb, line 45
def self.register_attributes(*names)
  options = { readonly: [] }
  options.merge!(names.pop) if names.last.kind_of? Hash

  # Defines the attribute getter and setters.
  class_eval do
    define_method :attributes do
      @attributes ||= names.reduce({}) { |hash, k| hash.merge(k.to_sym => nil) }
    end

    names.each do |key|
      define_method(:"#{key}") { @attributes[key] }

      unless options[:readonly].include?(key.to_sym)
        define_method :"#{key}=" do |val|
          send(:"#{key}_will_change!") unless val == @attributes[key]
          @attributes[key] = val
        end
      end
    end

    define_attribute_methods names
  end
end
save(options) { |basic_data| ... } click to toggle source
# File lib/trello/basic_data.rb, line 24
def save(options)
  new(options).tap do |basic_data|
    yield basic_data if block_given?
  end.save
end

Public Instance Methods

==(other) click to toggle source

Two objects are equal if their id methods are equal.

# File lib/trello/basic_data.rb, line 124
def ==(other)
  id == other.id
end
client() click to toggle source
# File lib/trello/basic_data.rb, line 128
def client
  @client ||= self.class.client
end
refresh!() click to toggle source

Refresh the contents of our object.

# File lib/trello/basic_data.rb, line 119
def refresh!
  self.class.find(id)
end
update_fields(fields) click to toggle source
# File lib/trello/basic_data.rb, line 114
def update_fields(fields)
  raise NotImplementedError, "#{self.class} does not implement update_fields."
end