Module: NeedsResources::ResourceType
- Defined in:
- lib/needs_resources/resource_type.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.children ⇒ Object
39 40 41 |
# File 'lib/needs_resources/resource_type.rb', line 39 def self.children @children ||= {} end |
.included(base) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/needs_resources/resource_type.rb', line 4 def self.included(base) children[underscore(base.name)] = base base.instance_eval do def attr(*names) = names.last.is_a?(Hash) ? names.pop : {} names.flatten.each do |n| attributes[n.to_sym] = attr_reader n end end def provide_top_level_instance(name=nil, args={}) name ||= ResourceType.underscore(self.name) TopLevelResources.instance.add_default(name, args) end def attributes @attributes ||= {} end end base.attr :name, :required => true end |
.underscore(name) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/needs_resources/resource_type.rb', line 29 def self.underscore(name) name = name.to_s.dup name.gsub!(/^.*::/, '') name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2') name.gsub!(/([a-z\d])([A-Z])/,'\1_\2') name.tr!("-", "_") name.downcase! name end |
Instance Method Details
#initialize(args = {}) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/needs_resources/resource_type.rb', line 43 def initialize(args={}) args = args.dup self.class.attributes.each do |name, | value = args.delete(name.to_s) || args.delete(name.to_sym) || [:default] if [:required] && value.nil? raise RequiredAttributeError.new(self, name) end instance_variable_set "@#{name}", value end args.each do |k, v| warn "Invalid initializer argument (#{k.inspect}) for class #{self}" end end |