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.
-
#yard ⇒ Forgeyard?
readonly
Forgeyard this forge belongs to.
Class Method Summary collapse
-
.define(forge_target, name: nil, yard: 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, yard: nil) ⇒ Forge
constructor
A new instance of Forge.
Constructor Details
#initialize(forge_target, parameters, name: nil, yard: nil) ⇒ Forge
Returns a new instance of Forge.
81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/object_forge/forge.rb', line 81 def initialize(forge_target, parameters, name: nil, yard: nil) @name = name @yard = yard @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.
67 68 69 |
# File 'lib/object_forge/forge.rb', line 67 def forge_target @forge_target end |
#name ⇒ Symbol? (readonly)
Returns forge name, only used for identification purposes.
60 61 62 |
# File 'lib/object_forge/forge.rb', line 60 def name @name end |
#parameters ⇒ Parameters, ForgeDSL (readonly)
Returns forge parameters.
71 72 73 |
# File 'lib/object_forge/forge.rb', line 71 def parameters @parameters end |
#yard ⇒ Forgeyard? (readonly)
Returns forgeyard this forge belongs to.
63 64 65 |
# File 'lib/object_forge/forge.rb', line 63 def yard @yard 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.
112 113 114 115 116 117 118 |
# File 'lib/object_forge/forge.rb', line 112 def forge(*traits, **overrides) attributes = build_attribute_hash(traits, overrides) instance = @mold.call(forge_target: @forge_target, attributes: attributes) @after_forge_hook&.call(instance) yield instance if block_given? instance end |