lib/rio/rl/base.rb in rio-0.3.4 vs lib/rio/rl/base.rb in rio-0.3.6

- old
+ new

@@ -48,47 +48,61 @@ '=' => 'stderr', '"' => 'strio', '?' => 'temp', '[' => 'aryio', '`' => 'cmdio', + '|' => 'cmdpipe', '#' => 'fd', ?_ => 'sysio', ?- => 'stdio', ?= => 'stderr', ?" => 'strio', ?? => 'temp', ?[ => 'aryio', ?` => 'cmdio', + ?| => 'cmdpipe', ?# => 'fd', }.freeze end end module RIO module RL #:nodoc: all PESCAPE = Regexp.new("[^-_.!~*'()a-zA-Z0-9;?:@&=+$,]",false, 'N').freeze ESCAPE = Regexp.new("[^-_.!~*'()a-zA-Z0-9;\/?:@&=+$,]",false, 'N').freeze + def escape(pth,esc=ESCAPE) + ::URI.escape(pth,esc) + end + def unescape(pth) + ::URI.unescape(pth) + end def fs2url(pth) -# Base.fs2url(pth) - pth.sub!(/^[a-zA-Z]:/,'') + #pth.sub!(/^[a-zA-Z]:/,'') pth = URI.escape(pth,ESCAPE) -# (Local::SEPARATOR == '/' ? pth : pth.gsub(Local::SEPARATOR,%r|/|)) + pth = '/' + pth if pth =~ /^[a-zA-Z]:/ + pth + # (Local::SEPARATOR == '/' ? pth : pth.gsub(Local::SEPARATOR,%r|/|)) end def url2fs(pth) # pth = pth.chop if pth.length > 1 and pth[-1] == ?/ cwd = RIO::RL.fs2url(::Dir.getwd) - pth = pth.chop if pth != '/' and pth[-1] == ?/ + #pth = pth.chop if pth != '/' and pth[-1] == ?/ pth = ::URI.unescape(pth) + if pth =~ %r#^/[a-zA-Z]:# + pth = pth[1..-1] + end + pth # (Local::SEPARATOR == '/' ? pth : pth.gsub(%r|/|,Local::SEPARATOR)) end def getwd() - ::URI::FILE.build({:path => fs2url(::Dir.getwd)+'/'}) + #::URI::FILE.build({:path => fs2url(::Dir.getwd)+'/'}) + ::URI::FILE.build({:path => fs2url(::Dir.getwd)}) end - module_function :url2fs,:fs2url,:getwd + module_function :url2fs,:fs2url,:getwd,:escape,:unescape end end module RIO module RL @@ -96,18 +110,18 @@ SCHC = SCHEME+':' SPLIT_RIORL_RE = %r{\A([a-z][a-z]+)(?:(:)(.*))?\Z}.freeze SUBSEPAR = ':' class Base + def initialize(*args) + + end + def self.subscheme(s) -# sch,opq,whole = split_riorl(s) -# sch /^rio:([^:]+):/.match(s)[1] -# s[4...s.index(SUBSEPAR,4)] -# e = s.index(SUBSEPAR,b) -# s.split(SUBSEPAR,3)[1] end + def self.split_riorl(s) body = s[SCHC.length...s.length] m = SPLIT_RIORL_RE.match(body) return [] if m.nil? return m[1],m[3],m[0] @@ -120,29 +134,38 @@ def self.parse(*a) parms = splitrl(a.shift) || [] new(*(parms+a)) end - def rl() - SCHC+self.url - end - def riorl() SCHC+self.url end + def rl() SCHC+self.url end +# def riorl() SCHC+self.url end + def to_s() self.fspath || '' end def ==(other) self.to_s == other.to_s end def ===(other) self == other end def =~(other) other =~ self.to_str end def length() self.to_s.length end + def fspath() nil end def path() nil end def to_rl() self.rl end def url() self.scheme+SUBSEPAR+self.opaque end + def close() nil end + + def fs2url(pth) RL.fs2url(pth) end + def url2fs(pth) RL.url2fs(pth) end + def escape(pth,esc=RL::ESCAPE) + RL.escape(pth,esc) + end + def unescape(pth) + RL.unescape(pth) + end + def callstr(func,*args) self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')' end - def close() nil end - end end end