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

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

Instance Method Summary collapse

Instance Method Details

#action(action = nil) ⇒ Object



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

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



80
81
82
83
# File 'lib/hammer_cli/apipie/resource.rb', line 80

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

#module_resourceObject



85
86
87
88
89
90
91
92
# File 'lib/hammer_cli/apipie/resource.rb', line 85

def module_resource
  return nil unless self.name
  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



94
95
96
97
98
99
100
101
# File 'lib/hammer_cli/apipie/resource.rb', line 94

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

Returns:

  • (Boolean)


109
110
111
# File 'lib/hammer_cli/apipie/resource.rb', line 109

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