class VirtualModule::BaseSourceProvider
Constants
- KwargsConverter
Attributes
pkgs[RW]
source[RW]
Public Class Methods
new(builder, pkgs, transpiler=nil)
click to toggle source
# File lib/virtual_module.rb, line 186 def initialize(builder, pkgs, transpiler=nil) @builder = builder @pkgs = pkgs @transpiler = transpiler.nil? ? ->(s){s} : transpiler @source = [] @compiled_lib = "" end
Public Instance Methods
lang()
click to toggle source
# File lib/virtual_module.rb, line 198 def lang self.class.name.match(/\:\:(.*)SourceProvider/)[1].downcase.to_sym end
load_packages()
click to toggle source
# File lib/virtual_module.rb, line 194 def load_packages [] #to be overrieded end
vclass()
click to toggle source
# File lib/virtual_module.rb, line 202 def vclass raise Exception.new("An equivalent method for #{__method__} seems not supported in #{lang}.") end
Private Instance Methods
prepare_params(input_queue_path, gen_driver, conv_kwargs, name, *args, **kwargs)
click to toggle source
# File lib/virtual_module.rb, line 210 def prepare_params(input_queue_path, gen_driver, conv_kwargs, name, *args, **kwargs) script, params = ["", []] if args.count == 1 && args[0].class == Symbol # do nothing - this will be called as "#name()" else type = ->(arg){ arg.class == Module ? "serialized" : "msgpack" } args.each_with_index do |arg, i| File.write( "#{input_queue_path}.#{i}.#{type.call(arg)}", arg.class == Module ? arg.___proxy_object_transmitter.convert_to(@builder.object_id): MessagePack.pack(arg) ) params << "params_#{i}" script += gen_driver.call(arg, input_queue_path, i, type.call(arg), params.last) end if kwargs.count>0 script += "kwargs=#{conv_kwargs.initializer};" kwargs.each_with_index do |(k,v), i| File.write( "#{input_queue_path}.#{params.count+i}.#{type.call(v)}", v.class == Module ? v.___proxy_object_transmitter.convert_to(@builder.object_id): MessagePack.pack(v) ) script += gen_driver.call(v, input_queue_path, params.count+i, type.call(v), conv_kwargs.setter.call(k)) end params << conv_kwargs.varargs end end [script, name==:[] ? "[#{params.join(',')}]" : "(#{params.join(',')})"] end