lib/fxruby-enhancement/api-mapper.rb.erb in fxruby-enhancement-0.0.4 vs lib/fxruby-enhancement/api-mapper.rb.erb in fxruby-enhancement-0.1.0
- old
+ new
@@ -48,12 +48,12 @@
end
<% end %>
module Enhancement
module Mapper
<% for @class, @details in @api %>
- def <%= @class.snake %> name = nil, ii: <%= (Fox::Enhancement::INITFORCE.member? @class) ? Fox::Enhancement::INITFORCE[@class] : 0 %>, pos: Enhancement.stack.last, &block
- Enhancement.stack << (@os = os = OpenStruct.new(klass: <%= @class %>, op: [], ii: ii, fx: nil, kinder: [], inst: nil, instance_result: nil))
+ def <%= @class.snake %> name = nil, ii: <%= (Fox::Enhancement::INITFORCE.member? @class) ? Fox::Enhancement::INITFORCE[@class] : 0 %>, pos: Enhancement.stack.last, reuse: nil, &block
+ Enhancement.stack << (@os = os = OpenStruct.new(klass: <%= @class %>, op: [], ii: ii, fx: nil, kinder: [], inst: nil, instance_result: nil, reusable: reuse))
Enhancement.components[name] = os unless name.nil?
unless pos.nil?
pos.kinder << os
else
Enhancement.base = os
@@ -71,10 +71,10 @@
@os.instance_block = block
end
<% @i+=1; end unless @details[:initialize].nil? %>
self.instance_eval &block
<% unless Fox::Enhancement::SPECIAL.member? @class %>
- os.fx = ->(){ <%= @class %>.new(*([pos.inst] + os.op[os.ii].to_h.values[1..-1])) }
+ os.fx = ->(){ <%= @class %>.new(*([pos.inst] + os.op[os.ii].to_h.values[1..-1].map{|v| (v.is_a?(OpenStruct)? v.inst : v)} )) }
<% else %>
os.fx = ->(){ <%= @class %>.new(*(os.op[os.ii].to_h.values)) }
<% end %>
Enhancement.stack.pop
@os = Enhancement.stack.last