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