lib/eventbox/argument_wrapper.rb in eventbox-0.1.0 vs lib/eventbox/argument_wrapper.rb in eventbox-1.0.0
- old
+ new
@@ -19,57 +19,58 @@
end
decls = []
convs = []
rets = []
+ kwrets = []
parameters.each_with_index do |(t, n), i|
€var = n.to_s.start_with?("€")
case t
when :req
decls << n
if €var
- convs << "#{n} = WrappedObject.new(#{n}, source_event_loop, :#{n})"
+ convs << "#{n} = Sanitizer.wrap_object(#{n}, source_event_loop, target_event_loop, :#{n})"
end
rets << n
when :opt
decls << "#{n}=nil"
if €var
- convs << "#{n} = #{n} ? WrappedObject.new(#{n}, source_event_loop, :#{n}) : []"
+ convs << "#{n} = #{n} ? Sanitizer.wrap_object(#{n}, source_event_loop, target_event_loop, :#{n}) : []"
end
rets << "*#{n}"
when :rest
decls << "*#{n}"
if €var
- convs << "#{n}.map!{|v| WrappedObject.new(v, source_event_loop, :#{n}) }"
+ convs << "#{n}.map!{|v| Sanitizer.wrap_object(v, source_event_loop, target_event_loop, :#{n}) }"
end
rets << "*#{n}"
when :keyreq
decls << "#{n}:"
if €var
- convs << "#{n} = WrappedObject.new(#{n}, source_event_loop, :#{n})"
+ convs << "#{n} = Sanitizer.wrap_object(#{n}, source_event_loop, target_event_loop, :#{n})"
end
- rets << "#{n}: #{n}"
+ kwrets << "#{n}: #{n}"
when :key
decls << "#{n}:nil"
if €var
- convs << "#{n} = #{n} ? {#{n}: WrappedObject.new(#{n}, source_event_loop, :#{n})} : {}"
+ convs << "#{n} = #{n} ? {#{n}: Sanitizer.wrap_object(#{n}, source_event_loop, target_event_loop, :#{n})} : {}"
else
convs << "#{n} = #{n} ? {#{n}: #{n}} : {}"
end
- rets << "**#{n}"
+ kwrets << "**#{n}"
when :keyrest
decls << "**#{n}"
if €var
- convs << "#{n}.each{|k, v| #{n}[k] = WrappedObject.new(v, source_event_loop, :#{n}) }"
+ convs << "#{n}.transform_values!{|v| Sanitizer.wrap_object(v, source_event_loop, target_event_loop, :#{n}) }"
end
- rets << "**#{n}"
+ kwrets << "**#{n}"
when :block
if €var
raise "block to `#{name}' can't be wrapped"
end
end
end
- code = "#{is_proc ? :proc : :lambda} do |source_event_loop#{decls.map{|s| ",#{s}"}.join }| # #{name}\n #{convs.join("\n")}\n [#{rets.join(",")}]\nend"
+ code = "#{is_proc ? :proc : :lambda} do |source_event_loop, target_event_loop#{decls.map{|s| ",#{s}"}.join }| # #{name}\n #{convs.join("\n")}\n [[#{rets.join(",")}],{#{kwrets.join(",")}}]\nend"
instance_eval(code, "wrapper code defined in #{__FILE__}:#{__LINE__} for #{name}")
end
end
end
end