Class: ObjectForge::Forge
- Inherits:
-
Object
- Object
- ObjectForge::Forge
- Defined in:
- lib/object_forge/forge.rb
Overview
Object building forge.
Usually created through Forge.define or ObjectForge::Forgeyard#define using ForgeDSL. Alternatively, can be directly initalized with Parameters if you prefer not using the DSL.
Then, #forge can be called to build instances of #forge_target.
Defined Under Namespace
Classes: Parameters
Instance Attribute Summary collapse
-
#forge_target ⇒ Class, Any
(also: #target)
readonly
Class or object to forge.
-
#name ⇒ Symbol?
readonly
Forge name, only used for identification purposes.
-
#parameters ⇒ Parameters, ForgeDSL
readonly
Forge parameters.
Class Method Summary collapse
-
.define(forge_target, name: nil) {|dsl| ... } ⇒ Forge
Define (and initialize) a forge using DSL.
Instance Method Summary collapse
-
#forge(*traits, **overrides) {|object| ... } ⇒ Any
(also: #build, #call)
Forge a new instance, applying attributes to forge target.
-
#initialize(forge_target, parameters, name: nil) ⇒ Forge
constructor
A new instance of Forge.
Constructor Details
#initialize(forge_target, parameters, name: nil) ⇒ Forge
Returns a new instance of Forge.
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/object_forge/forge.rb', line 74 def initialize(forge_target, parameters, name: nil) @name = name @forge_target = forge_target @parameters = parameters = @parameters. @crucible = determine_crucible() @mold = determine_mold(forge_target, ) @after_forge_hook = determine_after_forge_hook() end |
Instance Attribute Details
#forge_target ⇒ Class, Any (readonly) Also known as: target
Returns class or object to forge.
61 62 63 |
# File 'lib/object_forge/forge.rb', line 61 def forge_target @forge_target end |
#name ⇒ Symbol? (readonly)
Returns forge name, only used for identification purposes.
57 58 59 |
# File 'lib/object_forge/forge.rb', line 57 def name @name end |
#parameters ⇒ Parameters, ForgeDSL (readonly)
Returns forge parameters.
65 66 67 |
# File 'lib/object_forge/forge.rb', line 65 def parameters @parameters end |
Class Method Details
Instance Method Details
#forge(*traits, **overrides) {|object| ... } ⇒ Any Also known as: build, call
Forge a new instance, applying attributes to forge target.
Positional arguments are taken as trait names, keyword arguments as attribute overrides.
All traits and overrides are applied in argument order, with overrides always applied after traits.
If a block is given, forged instance is yielded to it after being built.
104 105 106 107 108 109 110 |
# File 'lib/object_forge/forge.rb', line 104 def forge(*traits, **overrides) resolved_attributes = resolve_attributes(traits, overrides) instance = @mold.call(forge_target: @forge_target, attributes: resolved_attributes) @after_forge_hook&.call(instance) yield instance if block_given? instance end |