module Atomsphere::Action::InstanceMethods

Public Class Methods

extended(base) click to toggle source
# File lib/atomsphere/action.rb, line 75
def self.extended base
  %w(required one_of optional).each do |m|
    base.class_variable_set :"@@#{m}", []
  end

  method_name = base.name.split('::').last.snakecase
  Atomsphere.define_singleton_method(method_name) do |*params|
    base.new(*params).run
  end
end

Public Instance Methods

action(a) click to toggle source
# File lib/atomsphere/action.rb, line 86
def action a
  class_variable_set :@@action, a
end
api_method(m) click to toggle source
# File lib/atomsphere/action.rb, line 90
def api_method m
  class_variable_set :@@api_method, m
end
one_of(*params) click to toggle source
# File lib/atomsphere/action.rb, line 108
def one_of *params
  if params.size < 2
    raise ArgumentError, "one_of requires two or more parameters"
  end

  class_variable_get(:@@one_of) << [*params]
  params.each{ |param| attr_accessor param }
end
optional(*params) click to toggle source
# File lib/atomsphere/action.rb, line 101
def optional *params
  params.each do |param|
    class_variable_get(:@@optional) << param
    attr_accessor param
  end
end
required(*params) click to toggle source
# File lib/atomsphere/action.rb, line 94
def required *params
  params.each do |param|
    class_variable_get(:@@required) << param
    attr_accessor param
  end
end