ruby-changes:3831
From: ko1@a...
Date: Tue, 29 Jan 2008 20:18:40 +0900 (JST)
Subject: [ruby-changes:3831] naruse - Ruby:r15320 (trunk): * add enc/trans/make_transdb.rb, dmytranscode.c
naruse 2008-01-29 20:18:22 +0900 (Tue, 29 Jan 2008) New Revision: 15320 Added files: trunk/dmytranscode.c trunk/enc/trans/make_transdb.rb Log: * add enc/trans/make_transdb.rb, dmytranscode.c http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/trans/make_transdb.rb?revision=15320&view=markup http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/trans/make_transdb.rb?r1=15320&r2=15319&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/dmytranscode.c?revision=15320&view=markup http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/dmytranscode.c?r1=15320&r2=15319&diff_format=u Index: enc/trans/make_transdb.rb =================================================================== --- enc/trans/make_transdb.rb (revision 0) +++ enc/trans/make_transdb.rb (revision 15320) @@ -0,0 +1,40 @@ +# +# static const rb_transcoder +# rb_from_US_ASCII = { +# "US-ASCII", "UTF-8", &from_US_ASCII, 1, 0, +# NULL, NULL, +# }; +# + +count = 0 +converters = {} +transdir = ARGV[0] +outhdr = ARGV[1] || 'transdb.h' +Dir.open(transdir) {|d| d.grep(/.+\.[ch]\z/)}.sort.each do |fn| + open(File.join(transdir,fn)) do |f| + f.each_line do |line| + if (/^static const rb_transcoder/ =~ line)..(/"(.*?)"\s*,\s*"(.*?)"/ =~ line) + if $1 && $2 + from_to = "%s to %s" % [$1, $2] + converters[from_to] + if converters[from_to] + raise ArgumentError, '%s:%d: transcode "%s" is already registered (%s:%d)' % + [fn, $., from_to, *converters[from_to].values_at(2, 3)] + else + converters[from_to] = [$1, $2, fn[0..-3], $.] + end + end + end + end + end +end +result = converters.map {|k, v| %[rb_declare_transcoder("%s", "%s", "%s");\n] % v}.join +mode = IO::RDWR|IO::CREAT +mode |= IO::BINARY if defined?(IO::BINARY) +open(outhdr, mode) do |f| + unless f.read == result + f.rewind + f.truncate(0) + f.print result + end +end Property changes on: enc/trans/make_transdb.rb ___________________________________________________________________ Name: svn:eol-style + LF Name: svn:keywords + Authors Id Revision Index: dmytranscode.c =================================================================== --- dmytranscode.c (revision 0) +++ dmytranscode.c (revision 15320) @@ -0,0 +1,2 @@ +#define NO_TRANSDB_H 1 +#include "transcode.c" Property changes on: dmytranscode.c ___________________________________________________________________ Name: svn:eol-style + LF Name: svn:keywords + Authors Id Revision -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/