aboutsummaryrefslogtreecommitdiffstats
path: root/enc
diff options
context:
space:
mode:
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]