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