From 040ffb5d792d932215b7b6fbce9ee9752d76e285 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 10 Nov 2007 09:22:59 +0000 Subject: * gem_prelude.rb: new file for gem libraries. currently empty. * common.mk: generate ext_prelude.c by prelude.rb and gem_prelude.rb. ruby (not miniruby) is linked with ext_prelude.o instead of prelude.o. * inits.c (rb_call_inits): don't call Init_prelude. * ruby.c: support --disable-gems option. (ruby_init_gems): new function to define Gem::Enable and invoke Init_prelude. (process_options): call ruby_init_gems just after ruby_init_loadpath. * tool/compile_prelude.rb: support multiple files. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/compile_prelude.rb | 64 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 9 deletions(-) (limited to 'tool') diff --git a/tool/compile_prelude.rb b/tool/compile_prelude.rb index 1012d1fbc2..1f67d4c396 100644 --- a/tool/compile_prelude.rb +++ b/tool/compile_prelude.rb @@ -1,33 +1,79 @@ +*preludes, outfile = *ARGV -prelude, outfile = *ARGV +C_ESC = { + "\\" => "\\\\", + '"' => '\"', + "\n" => '\n', +} + +0x00.upto(0x1f) {|ch| C_ESC[[ch].pack("C")] ||= "\\x%02x" % ch } +0x7f.upto(0xff) {|ch| C_ESC[[ch].pack("C")] = "\\x%02x" % ch } +C_ESC_PAT = Regexp.union(*C_ESC.keys) + +def c_esc(str) + '"' + str.gsub(C_ESC_PAT) { C_ESC[$&] } + '"' +end -lines = File.readlines(prelude).map{|line| - line.dump +lines_list = preludes.map {|prelude| + lines = [] + File.readlines(prelude).each {|line| + line.gsub!(/RbConfig::CONFIG\["(\w+)"\]/) { + require 'rbconfig' + if RbConfig::CONFIG.has_key? $1 + c_esc(RbConfig::CONFIG[$1]) + else + $& + end + } + lines << c_esc(line) + } + lines } open(outfile, 'w'){|f| - f.puts <