summaryrefslogtreecommitdiff
path: root/enc
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-02 11:57:49 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-02 11:57:49 +0000
commit5cea1b07f4f468cce46367da2a27a6d1e69c68f2 (patch)
treef53fb2fefbe50249a1a5fb69cdaf96a5e7df9517 /enc
parent797faf92d96c00ba28edc9613a5205b6ff87e45b (diff)
* enc/trans/make_transdb.rb: check foo.c only if foo.trans exists.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc')
-rw-r--r--enc/trans/make_transdb.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/enc/trans/make_transdb.rb b/enc/trans/make_transdb.rb
index 38845978a3..752e74624d 100644
--- a/enc/trans/make_transdb.rb
+++ b/enc/trans/make_transdb.rb
@@ -11,10 +11,23 @@ converters = {}
transdirs = ARGV.dup
outhdr = transdirs.shift || 'transdb.h'
transdirs << 'enc/trans' if transdirs.empty?
+
+transdirs = transdirs.sort_by {|td|
+ td.length
+}.inject([]) {|tds, td|
+ next tds unless File.directory?(td)
+ tds << td if tds.all? {|td2| !File.identical?(td2, td) }
+ tds
+}
+
files = {}
transdirs.each do |transdir|
- next unless File.directory?(transdir)
- Dir.open(transdir) {|d| d.grep(/.+\.[ch]\z/) }.sort_by {|e|
+ names = Dir.entries(transdir)
+ names_t = names.map {|n| /(?!\A)\.trans\z/ =~ n ? $` : nil }.compact
+ names_c = names.map {|n| /(?!\A)\.c\z/ =~ n ? $` : nil }.compact
+ (names_t & names_c).map {|n|
+ "#{n}.c"
+ }.sort_by {|e|
e.scan(/(\d+)|(\D+)/).map {|n,a| a||[n.size,n.to_i]}.flatten
}.each do |fn|
next if files[fn]