Module: HammerCLI::Apipie::Resource::ClassMethods

Defined in:
lib/hammer_cli/apipie/resource.rb

Instance Method Summary collapse

Instance Method Details

#action(action = nil) ⇒ Object



99
100
101
102
103
# File 'lib/hammer_cli/apipie/resource.rb', line 99

def action(action=nil)
  @api_action = action unless action.nil?
  return @api_action if @api_action
  return superclass.action if superclass.respond_to? :action
end

#class_resourceObject



77
78
79
80
# File 'lib/hammer_cli/apipie/resource.rb', line 77

def class_resource
  return @api_resource if @api_resource
  return superclass.class_resource if superclass.respond_to? :class_resource
end

#module_resourceObject



82
83
84
85
86
87
88
# File 'lib/hammer_cli/apipie/resource.rb', line 82

def module_resource
  enclosing_module = self.name.split("::")[0..-2].inject(Object) { |mod, cls| mod.const_get cls }

  if enclosing_module.respond_to? :resource
    enclosing_module.resource
  end
end

#resource(resource_class = nil, action = nil) ⇒ Object



90
91
92
93
94
95
96
97
# File 'lib/hammer_cli/apipie/resource.rb', line 90

def resource(resource_class=nil, action=nil)
  @api_resource = ResourceDefinition.new(resource_class) unless resource_class.nil?
  @api_action = action unless action.nil?

  # if the resource definition is not available in this class
  # try to look it up in it's enclosing module/class
  return class_resource || module_resource
end

#resource_defined?Boolean



105
106
107
# File 'lib/hammer_cli/apipie/resource.rb', line 105

def resource_defined?
  not (resource.nil? or action.nil?)
end