summaryrefslogtreecommitdiff
path: root/scripts/context/ruby/base/kpse.rb
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2006-11-16 12:02:00 +0100
committerHans Hagen <pragma@wxs.nl>2006-11-16 12:02:00 +0100
commit2129e59b313d0a032b7b6eb3dab287dd32437ef9 (patch)
tree23b8818581484b897723bf6fb42a12a1b660afb6 /scripts/context/ruby/base/kpse.rb
parentf9c73d27ce69d59cfaeb543664e69c620642a0dc (diff)
downloadcontext-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.rb41
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