lib/rio/rl/builder.rb in rio-0.3.4 vs lib/rio/rl/builder.rb in rio-0.3.6
- old
+ new
@@ -42,81 +42,42 @@
module RIO
module RL
class Builder
- def self.canon(a)
- #puts "canon: #{a.inspect}"
- case a[0]
- when ::String
- case a[0]
- when /^[a-z][a-z]+:/
- a[0] = 'rio:'+a[0] unless a[0] =~ /^rio:/
- a
- when %r|^/|
- a[0] = 'rio:file://'+a[0]
- a
- else
- a[0] = 'rio:path:'+a[0]
- a
- end
- when RIO::Rio
- a[0] = a[0].to_rl
- canon(a)
- when RL::Base
- a
- when ::URI
- a
- when ?? , ?= , ?_ , ?",?[,?#,?`
- a[0] = 'rio:'+CHMAP[a[0]]+':'
- a
- when ?-
- a[0] = ( a.size == 1 ? 'rio:'+CHMAP[a[0]]+':' : 'rio:cmdio:' )
- a
- when ?$
- a[0] = 'rio:strio:'
- a
- when ::IO
- a.unshift('rio:sysio:')
- a
- when ::StringIO
- a.unshift('rio:strio:')
- a
- else
- a[0] = a[0].to_s
- canon(a)
- end
- end
-
-
def self.build(*a)
#puts "build: #{a.inspect}"
a.flatten!
case a[0]
when ::String
case a[0]
+ when /^[a-zA-Z]:/
+ a[0] = 'rio:file:///'+a[0]
when /^[a-z][a-z]+:/
a[0] = 'rio:'+a[0] unless a[0] =~ /^rio:/
+ when %r|^//|
+ a[0] = 'rio:file:'+a[0]
when %r|^/|
a[0] = 'file://'+a[0]
return Factory.instance.riorl_class('file').new(*a)
else
return Factory.instance.riorl_class('path').new(*a)
end
when RIO::Rio
a[0] = a[0].to_rl
when RL::Base
- #p 'heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
a0 = a.shift
- return a0.class.new(a0.uri.dup,*a)
+ #p 'THERE',a0,a0.clone
+ return a0.clone
+ #return a0.class.new(a0.clone,*a)
when ::URI
a0 = a.shift
cl = Factory.instance.riorl_class(a0.scheme)
o = cl.new(a0,*a) unless cl.nil?
return o
when ::Symbol
a[0] = 'rio:' + a[0].to_s + ':'
- when ?? , ?= , ?_ , ?", ?[, ?#, ?`
+ when ?? , ?= , ?_ , ?", ?[, ?#, ?`, ?|
a[0] = 'rio:'+CHMAP[a[0]]+':'
when ?-
a[0] = ( a.size == 1 ? 'rio:'+CHMAP[a[0]]+':' : 'rio:cmdio:' )
when ?$
a[0] = 'rio:strio:'