summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2006-08-08 17:52:00 +0200
committerHans Hagen <pragma@wxs.nl>2006-08-08 17:52:00 +0200
commitf9c73d27ce69d59cfaeb543664e69c620642a0dc (patch)
tree1006da035756ae967f73424e77989cf3cb316747 /scripts
parentf0bcd1905465b37aea4513fe0b256e13db1af9fe (diff)
downloadcontext-f9c73d27ce69d59cfaeb543664e69c620642a0dc.tar.gz
stable 2006.08.08 17:52
Diffstat (limited to 'scripts')
-rw-r--r--scripts/context/ruby/base/tex.rb34
-rw-r--r--scripts/context/ruby/base/texutil.rb67
2 files changed, 70 insertions, 31 deletions
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,