class IbRubyProxy::Server::IbRubyClassFilesGenerator

Source code generator that interacts with {IbRubyClassSourceGenerator} and writes down the actual files with the source for both Ruby classes representing IB classes and Ruby extensions for these.

Attributes

client_code_dir[R]
server_code_dir[R]

Public Class Methods

new(client_code_dir:, server_code_dir:) click to toggle source

@param [String] client_code_dir @param [String] server_code_dir

# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 11
def initialize(client_code_dir:, server_code_dir:)
  @client_code_dir = client_code_dir
  @server_code_dir = server_code_dir

  import_ruby_classes
end

Public Instance Methods

generate_all() click to toggle source

Generate client files and server class extensions

It will format the generated code with {github.com/ruby-formatter/rufo Rufo}.

@see IbRubyClassSourceGenerator#ruby_class_source @see IbRubyClassSourceGenerator#ib_class_extension_source

# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 24
def generate_all
  do_generate_all
  format_code
end

Private Instance Methods

do_generate_all() click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 41
def do_generate_all
  ruby_classes.each do |class_name|
    generate_files class_name
  end
end
format_code() click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 69
def format_code
  [server_code_dir, client_code_dir].each do |dir|
    puts "Formatting #{dir}..."
    system "rufo #{dir}"
  end
end
generate_client_file(generator, file_name) click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 57
def generate_client_file(generator, file_name)
  target_file = File.join(client_code_dir, file_name)
  puts "Generating client file: #{target_file}..."
  File.open(target_file, 'w') { |file| file.write(generator.ruby_class_source) }
end
generate_files(class_name) click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 47
def generate_files(class_name)
  ib_class = Java::ComIbClient.const_get(class_name)
  generator = IbRubyClassSourceGenerator.new(ib_class,
                                             namespace: 'IbRubyProxy::Client::Ib')

  file_name = "#{IbRubyProxy::Util::StringUtils.to_underscore(class_name)}.rb"
  generate_client_file(generator, file_name)
  generate_server_file(generator, file_name)
end
generate_server_file(generator, file_name) click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 63
def generate_server_file(generator, file_name)
  target_file = File.join(server_code_dir, file_name)
  puts "Generating server file: #{target_file}..."
  File.open(target_file, 'w') { |file| file.write(generator.ib_class_extension_source) }
end
import_ruby_classes() click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 31
def import_ruby_classes
  ruby_classes.each do |class_name|
    java_import "com.ib.client.#{class_name}"
  end
end
ruby_classes() click to toggle source
# File lib/ib_ruby_proxy/server/ib_ruby_class_files_generator.rb, line 37
def ruby_classes
  @ruby_classes ||= IbRubyProxy.config['classes']
end