module Spark
Allows components to easily manage their attributes
# Example component usage: class SomeClass include Spark::Component::Attribute # Set a :label attribute, and a :size attribute with default value :large attribute :label, { size: :large } def inialize(attributes = nil) initialize_attributes(attributes) end end # When initialized like: some_instance = SomeClass.new(label: "Test") The Class's instance will now have access to @label => "Test" @size => :large And will define access methods: some_instance.attribute_label some_instance.attribute_size Attributes can also be accessed with a helper method some_instance.attribute(:label) some_instance.attribute(:size) Extending a class will extend its attributes and their defaults. This supports a common set of base attributes such as id, class, data, aria, and html. The html attribute is meant to allow for passing along unaccounted for tag attributes.