Class: ObjectForge::Forge

Inherits:
Object
  • Object
show all
Defined in:
lib/object_forge/forge.rb

Overview

Object instantitation forge.

Since:

  • 0.1.0

Defined Under Namespace

Classes: Parameters

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(forged, parameters, name: nil) ⇒ Forge

Returns a new instance of Forge.

Parameters:

  • forged (Class)

    class to forge

  • parameters (Parameters, ForgeDSL)

    forge parameters

  • name (Symbol, nil) (defaults to: nil)

    forge name

Since:

  • 0.1.0



50
51
52
53
54
# File 'lib/object_forge/forge.rb', line 50

def initialize(forged, parameters, name: nil)
  @name = name
  @forged = forged
  @parameters = parameters
end

Instance Attribute Details

#forgedClass (readonly)

Returns class to forge.

Returns:

  • (Class)

    class to forge

Since:

  • 0.1.0



42
43
44
# File 'lib/object_forge/forge.rb', line 42

def forged
  @forged
end

#nameSymbol? (readonly)

Returns forge name.

Returns:

  • (Symbol, nil)

    forge name

Since:

  • 0.1.0



39
40
41
# File 'lib/object_forge/forge.rb', line 39

def name
  @name
end

#parametersParameters, ForgeDSL (readonly)

Returns forge parameters.

Returns:

Since:

  • 0.1.0



45
46
47
# File 'lib/object_forge/forge.rb', line 45

def parameters
  @parameters
end

Class Method Details

.define(forged, name: nil) {|f| ... } ⇒ Forge

Define (and create) a forge using DSL.

Parameters:

  • forged (Class)

    class to forge

  • name (Symbol, nil) (defaults to: nil)

    forge name

Yield Parameters:

Yield Returns:

  • (void)

Returns:

See Also:

Since:

  • 0.1.0



34
35
36
# File 'lib/object_forge/forge.rb', line 34

def self.define(forged, name: nil, &)
  new(forged, ForgeDSL.new(&), name:)
end

Instance Method Details

#forge(*traits, **overrides, &) ⇒ Any #forge(traits, overrides, &) ⇒ Any Also known as: build, []

Forge a new instance.

Positional arguments are taken as trait names, keyword arguments as attribute overrides, unless there are exactly two positional arguments: an array and a hash.

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.

Parameters:

  • traits (Array<Symbol>)

    traits to apply

  • overrides (Hash{Symbol => Any})

    attribute overrides

Yield Parameters:

  • object (Any)

    forged instance

Yield Returns:

  • (void)

Returns:

  • (Any)

    built instance

Since:

  • 0.1.0



77
78
79
80
81
82
# File 'lib/object_forge/forge.rb', line 77

def forge(*traits, **overrides)
  resolved_attributes = resolve_attributes(traits, overrides)
  instance = build_instance(resolved_attributes)
  yield instance if block_given?
  instance
end