From f9c73d27ce69d59cfaeb543664e69c620642a0dc Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 8 Aug 2006 17:52:00 +0200 Subject: stable 2006.08.08 17:52 --- scripts/context/ruby/base/tex.rb | 34 ++++++++++++++++++ scripts/context/ruby/base/texutil.rb | 67 +++++++++++++++++++----------------- 2 files changed, 70 insertions(+), 31 deletions(-) (limited to 'scripts') diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb index 5e357e6d7..a6403dcde 100644 --- a/scripts/context/ruby/base/tex.rb +++ b/scripts/context/ruby/base/tex.rb @@ -1724,6 +1724,40 @@ class TEX runbackend(rawbase) popresult(rawbase,result) end + if true then # autopurge + begin + File.open(File.suffixed(rawbase, 'tuo')) do |f| + ok = 0 + f.each do |line| + case ok + when 1 then + # next line is empty + ok = 2 + when 2 then + if line =~ /^\%\s+\>\s+(.*?)\s+(\d+)/mois then + filename, n = $1, $2 + done = File.delete(filename) rescue false + if done && getvariable('verbose') then + report("deleting #{filename} (#{n} times used)") + end + else + break + end + else + if line =~ /^\%\s+temporary files\:\s+(\d+)/mois then + if $1.to_i == 0 then + break + else + ok = 1 + end + end + end + end + end + rescue + report("fatal error #{$!}") + end + end end Kpse.runscript('ctxtools',rawbase,'--purge') if getvariable('purge') diff --git a/scripts/context/ruby/base/texutil.rb b/scripts/context/ruby/base/texutil.rb index b81604c17..2bca83167 100644 --- a/scripts/context/ruby/base/texutil.rb +++ b/scripts/context/ruby/base/texutil.rb @@ -335,20 +335,18 @@ class TeXUtil module MyFiles - @@files = Hash.new + @@files, @@temps = Hash.new, Hash.new def MyFiles::reset(logger) - @@files = Hash.new + @@files, @@temps = Hash.new, Hash.new end def MyFiles::reader(logger,data) case data[0] when 'b', 'e' then - if @@files.key?(data[1]) then - @@files[data[1]] += 1 - else - @@files[data[1]] = 1 - end + @@files[data[1]] = (@@files[data[1]] ||0) + 1 + when 't' then # temporary file + @@temps[data[1]] = (@@temps[data[1]] ||0) + 1 end end @@ -357,14 +355,21 @@ class TeXUtil @@files.keys.sort.each do |k| handle << "% > #{k} #{@@files[k]/2}\n" end + handle << logger.banner("temporary files: #{@@temps.size}") + @@temps.keys.sort.each do |k| + handle << "% > #{k} #{@@temps[k]}\n" + end end def MyFiles::processor(logger) @@files.keys.sort.each do |k| unless (@@files[k] % 2) == 0 then - logger.report("check loading of file #{k}, begin/end problem") + logger.report("check loading of file '#{k}', begin/end problem") end end + @@temps.keys.sort.each do |k| + # logger.report("temporary file '#{k}' can be deleted") + end end def MyFiles::finalizer(logger) @@ -550,8 +555,8 @@ class TeXUtil class Register -@@specialsymbol = "\000" -@@specialbanner = "" # \\relax" + @@specialsymbol = "\000" + @@specialbanner = "" # \\relax" @@debug = false @@debug = true @@ -577,31 +582,31 @@ class TeXUtil # @entry, @key = sorter.normalize(@entry), sorter.normalize(sorter.tokenize(@key)) @entry = sorter.normalize(sorter.tokenize(@entry)) if @normalizeentry @key = sorter.normalize(sorter.tokenize(@key)) -if false then - @entry, @key = [@entry, @key].collect do |target| - # +a+b+c &a&b&c a+b+c a&b&c - case target[0,1] - when '&' then target = target.sub(/^./o,'').gsub(/([^\\])\&/o) do "#{$1}#{@@split}" end - when '+' then target = target.sub(/^./o,'').gsub(/([^\\])\+/o) do "#{$1}#{@@split}" end - else target = target .gsub(/([^\\])[\&\+]/o) do "#{$1}#{@@split}" end + if false then + @entry, @key = [@entry, @key].collect do |target| + # +a+b+c &a&b&c a+b+c a&b&c + case target[0,1] + when '&' then target = target.sub(/^./o,'').gsub(/([^\\])\&/o) do "#{$1}#{@@split}" end + when '+' then target = target.sub(/^./o,'').gsub(/([^\\])\+/o) do "#{$1}#{@@split}" end + else target = target .gsub(/([^\\])[\&\+]/o) do "#{$1}#{@@split}" end + end + # {a}{b}{c} + # if target =~ /^\{(.*)\}$/o then + # $1.split(/\} \{/o).join(@@split) # space between } { is mandate + # else + target + # end end - # {a}{b}{c} - # if target =~ /^\{(.*)\}$/o then - # $1.split(/\} \{/o).join(@@split) # space between } { is mandate - # else - target - # end + else + @entry, @key = cleanupsplit(@entry), cleanupsplit(@key) end -else - @entry, @key = cleanupsplit(@entry), cleanupsplit(@key) -end @sortkey = sorter.simplify(@key) -# special = @sortkey =~ /^([^a-zA-Z\\])/o -special = @sortkey =~ /^([\`\~\!\@\#\$\%\^\&\*\(\)\_\-\+\=\{\}\[\]\:\;\"\'\|\<\,\>\.\?\/\d])/o + # special = @sortkey =~ /^([^a-zA-Z\\])/o + special = @sortkey =~ /^([\`\~\!\@\#\$\%\^\&\*\(\)\_\-\+\=\{\}\[\]\:\;\"\'\|\<\,\>\.\?\/\d])/o @sortkey = @sortkey.split(@@split).collect do |c| sorter.remap(c) end.join(@@split) -if special then - @sortkey = "#{@@specialsymbol}#{@sortkey}" -end + if special then + @sortkey = "#{@@specialsymbol}#{@sortkey}" + end @sortkey = [ @sortkey.downcase, @sortkey, -- cgit v1.2.3