#!/usr/bin/env ruby require 'fileutils' def relative_file_name(file_name) file_name.sub(/\.rb$/, '') end def symbol_name(relative_file_name) "#{relative_file_name.gsub('/', '_')}_irep" end if ARGV.length < 2 puts "Usage: (entryfile) (outputfile)" exit 1 end ENTRY_FILE = ARGV[0] OUTPUT_PATH = ARGV[1] ENTRY_DIRECTORY = File.dirname(ENTRY_FILE) MRBC = ENV['MRBC'] File.open(OUTPUT_PATH, "w") do |f| f.puts <> #{OUTPUT_PATH}") end end File.open(OUTPUT_PATH, "a") do |f| f.puts <exc) { mrb_p(mrb, mrb_obj_value(mrb->exc)); mrb->exc = 0; } return mrb_nil_value(); } END end RUBY_SOURCE_PATH = "#{OUTPUT_PATH}.tmp" File.open(RUBY_SOURCE_PATH, "w") do |f| f.puts < #{index},\n" end f.puts <> #{OUTPUT_PATH}") FileUtils.rm RUBY_SOURCE_PATH File.open(OUTPUT_PATH, "a") do |f| f.puts <kernel_module; mrb_define_method(mrb, kernel_module, "require_internal", mrb_require_internal, ARGS_REQ(1)); mrb_load_irep(mrb, mrb_require_internal_irep); } END end