Class: Seasar::Container::Assembler::ManualConstructorAssembler
- Inherits:
-
AbstractAssembler
- Object
- AbstractAssembler
- Seasar::Container::Assembler::ManualConstructorAssembler
- Defined in:
- lib/seasar/container/assembler/manual-constructor-assembler.rb
Overview
コンストラクタをマニュアルインジェクションで構築するアセンブラです。
Instance Method Summary collapse
-
#assemble ⇒ Object
コンストラクタをマニュアルインジェクションで構築します。 - args - none - return - none.
-
#initialize(component_def) ⇒ ManualConstructorAssembler
constructor
ManualConstructorAssemblerを構築します。 - args 1.
Methods inherited from AbstractAssembler
Constructor Details
#initialize(component_def) ⇒ ManualConstructorAssembler
ManualConstructorAssemblerを構築します。
-
args
-
Seasar::Container::ComponentDef component_def
-
29 30 31 |
# File 'lib/seasar/container/assembler/manual-constructor-assembler.rb', line 29 def initialize(component_def) super end |
Instance Method Details
#assemble ⇒ Object
コンストラクタをマニュアルインジェクションで構築します。
-
args
-
none
-
-
return
-
none
-
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/seasar/container/assembler/manual-constructor-assembler.rb', line 38 def assemble procedure = nil if @component_def.onetime_proc.is_a?(Proc) procedure = @component_def.onetime_proc @component_def.onetime_proc = nil elsif @component_def.constructor.is_a?(Proc) procedure = @component_def.constructor end if procedure.nil? args = @component_def.get_arg_defs.map {|arg_def| arg_def.value} return @component_def.get_concreate_class.new(*args) # elsif @component_def.component_class == Proc # return procedure else component = procedure.call(@component_def) if component.is_a?(@component_def.component_class) return component else raise TypeError.new("invalid instance found. #{@component_def.component_class.name} is expected, but was #{component.class.name}") end end end |