def attribute(name, options)
validate(
options,
{
:display_name => { :kind_of => String },
:description => { :kind_of => String },
:choice => { :kind_of => [ Array ], :default => [] },
:calculated => { :equal_to => [ true, false ], :default => false },
:type => { :equal_to => [ "string", "array", "hash", "symbol" ], :default => "string" },
:required => { :equal_to => [ "required", "recommended", "optional", true, false ], :default => "optional" },
:recipes => { :kind_of => [ Array ], :default => [] },
:default => { :kind_of => [ String, Array, Hash ] }
}
)
options[:required] = remap_required_attribute(options[:required]) unless options[:required].nil?
validate_string_array(options[:choice])
validate_calculated_default_rule(options)
validate_choice_default_rule(options)
@attributes[name] = options
@attributes[name]
end