diff options
author | Hans Hagen <pragma@wxs.nl> | 2006-11-16 12:02:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2006-11-16 12:02:00 +0100 |
commit | 2129e59b313d0a032b7b6eb3dab287dd32437ef9 (patch) | |
tree | 23b8818581484b897723bf6fb42a12a1b660afb6 /scripts/context/ruby/base/kpse.rb | |
parent | f9c73d27ce69d59cfaeb543664e69c620642a0dc (diff) | |
download | context-2129e59b313d0a032b7b6eb3dab287dd32437ef9.tar.gz |
stable 2006.11.16 12:02
Diffstat (limited to 'scripts/context/ruby/base/kpse.rb')
-rw-r--r-- | scripts/context/ruby/base/kpse.rb | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/scripts/context/ruby/base/kpse.rb b/scripts/context/ruby/base/kpse.rb index b0321672f..bff3cc1fa 100644 --- a/scripts/context/ruby/base/kpse.rb +++ b/scripts/context/ruby/base/kpse.rb @@ -28,6 +28,10 @@ class String end end + def sane_path + self.gsub(/\\/,'/') + end + end class Array @@ -36,6 +40,12 @@ class Array self.join(File::PATH_SEPARATOR) end + def non_empty + self.delete_if do |i| + (i == nil || i.empty?) rescue false + end + end + end module Kpse @@ -96,42 +106,57 @@ module Kpse @@scripts.keys.sort.each do |k| puts("scripts : #{k} -> #{@@scripts[k]}\n") end end + def Kpse.used_path(varname) + begin + if @@mswindows then + path = run("--expand-path=\$#{varname}") rescue '' + else + path = run("--expand-path='$#{varname}'") rescue '' + end + rescue + path = '' + end + return path.sane_path + end + def Kpse.found(filename, progname=nil, format=nil) begin tag = Kpse.key(filename) # all if @@located.key?(tag) then - return @@located[tag] + return @@located[tag].sane_path elsif FileTest.file?(filename) then setvariable(tag,filename) return filename elsif FileTest.file?(File.join(@@ownpath,filename)) then setvariable(tag,File.join(@@ownpath,filename)) - return @@located[tag] + return @@located[tag].sane_path else [progname,@@progname].flatten.compact.uniq.each do |prg| [format,@@formats].flatten.compact.uniq.each do |fmt| begin tag = Kpse.key(filename,prg,fmt) if @@located.key?(tag) then - return @@located[tag] + return @@located[tag].sane_path elsif p = Kpse.kpsewhich(filename,prg,fmt) then setvariable(tag,p.chomp) - return @@located[tag] + return @@located[tag].sane_path end rescue end end end setvariable(tag,filename) - return filename + return filename.sane_path end rescue - filename + filename.sane_path end end def Kpse.kpsewhich(filename,progname,format) - Kpse.run("-progname=#{progname} -format=\"#{format}\" #{filename}") + p = if progname && ! progname.empty? then "-progname=#{progname}" else '' end + f = if format && ! format.empty? then "-format=\"#{format}\"" else '' end + Kpse.run("#{p} #{f} #{filename}") end def Kpse.which @@ -160,7 +185,7 @@ module Kpse # maybe we should check for writeability unless @@paths.key?('formatpaths') then begin - setpath('formatpaths',run("--show-path=fmt").gsub(/\\/,'/').split_path) + setpath('formatpaths',run("--show-path=fmt").sane_path.split_path) rescue setpath('formatpaths',[]) end |