Module: ArrayFu
- Includes:
- Initializer
- Defined in:
- lib/arrayfu/arrayfu.rb,
lib/arrayfu/version.rb,
lib/arrayfu/initializer.rb,
lib/arrayfu/item_constraint.rb,
lib/arrayfu/module_registry.rb,
lib/arrayfu/array_definition.rb,
lib/arrayfu/generate_readers.rb,
lib/arrayfu/generate_writers.rb,
lib/arrayfu/generate_mutators.rb,
lib/arrayfu/generate_visitors.rb,
lib/arrayfu/mutator_definition.rb,
lib/arrayfu/visitor_definition.rb
Overview
Main module that can be mixed in to allow for declaritive array definitions
Defined Under Namespace
Modules: ClassMethods, GenerateMutators, GenerateReaders, GenerateVisitors, GenerateWriters, Initializer, ModuleRegistry Classes: ArrayDefinition, ItemConstraint, MutatorDefinition, VisitorDefinition
Constant Summary collapse
- VERSION =
"1.0.0"
Class Method Summary collapse
Instance Method Summary collapse
-
#array(name, &block) ⇒ Object
Array definition dsl entry point.
-
#initialize(*args) ⇒ Object
This method is here to ensure that all of the array definitions are expanded and a variable instance is assigned to the variable name specified by the array If you are mixing in this module and the class has its own constructor definition, make sure you call super to ensure that array initialization occurs correctly as shown:.
Methods included from Initializer
#initialize_arrays, #initialize_defaults, #initialize_false, #initialize_hashes
Class Method Details
.included(base) ⇒ Object
6 7 8 |
# File 'lib/arrayfu/arrayfu.rb', line 6 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#array(name, &block) ⇒ Object
Array definition dsl entry point
Parameters:
- name
-
A name that will be used to initialize a variable on the class that is including this module. It will serve as the backing array for the array definition
- &block
-
A configuration block that will serve to configure an ArrayDefinition
Examples:
-
Define a basic array
class SomeClass include ArrayFu array :names end
-
Define a basic array that supports a read accessor
class SomeClass include ArrayFu array :names { readable } end
-
Define a basic array that supports a write accessor
class SomeClass include ArrayFu array :names { writeable } end
-
Define a basic array that supports both read and write accessors
class SomeClass include ArrayFu array :names { read_and_write } end
81 82 83 |
# File 'lib/arrayfu/arrayfu.rb', line 81 def array(name, &block) self.class.array(name, &block) end |
#initialize(*args) ⇒ Object
This method is here to ensure that all of the array definitions are expanded and a variable instance is assigned to the variable name specified by the array If you are mixing in this module and the class has its own constructor definition, make sure you call super to ensure that array initialization occurs correctly as shown:
class SomeClass
include ArrayFu
array :names
def initialize(some_value)
super
end
end
If your class does not contain custom constructor logic, no extra code is needed:
class SomeClass
include ArrayFu
array :names
end
31 32 33 34 35 36 |
# File 'lib/arrayfu/arrayfu.rb', line 31 def initialize(*args) self.class.each_array_definition do |array_definition| initialize_arrays(array_definition.name) ArrayFu::ModuleRegistry.configure(self, array_definition) end end |