lib/rio/rl/uri.rb in rio-0.3.1 vs lib/rio/rl/uri.rb in rio-0.3.2
- old
+ new
@@ -43,21 +43,28 @@
attr_writer :base
def initialize(u,*args)
#p callstr('initialize',u,*args)
# u should be a ::URI or something that can be parsed to one
args = get_base(*args)
- @uri = ( u.kind_of?(::URI) ? u.dup : parse_url(u.to_s) )
+ @uri = _mkuri(u)
self.join(*args)
@uri.path = '/' if @uri.absolute? and @uri.path == ''
end
def initialize_copy(*args)
#p callstr('initialize_copy',*args)
super
@uri = @uri.clone unless @uri.nil?
@base = @base.clone unless @base.nil?
end
+ def _mkuri(arg)
+ (arg.kind_of?(::URI) ? arg.dup : parse_url(arg.to_s))
+ end
+ def base(arg=nil)
+ @base = _mkuri(arg) unless arg.nil? or @uri.absolute?
+ (@base.nil? ? @uri : @base)
+ end
def join(*args)
# self.class.joinuri(self.uri,*args)
return @uri if args.empty?
sa = args.map(&:to_s).map { |str| ::URI.escape(str,ESCAPE) }
sa.unshift @uri.path unless @uri.path.empty?
@@ -80,12 +87,9 @@
def route_to(other)
self.class.new(@uri.route_to(other.uri),self.abs)
end
def merge(other)
self.class.new(@uri.merge(other.uri))
- end
- def base()
- (@base.nil? ? @uri : @base)
end
def get_base(*args)
# args.each { |a| p "get_base len=#{args.length} #{a.class}##{a.to_s}" }
@base = nil
if args.length > 0