summaryrefslogtreecommitdiff
path: root/lib/uri/generic.rb
diff options
context:
space:
mode:
authorakira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-10-04 06:26:45 +0000
committerakira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-10-04 06:26:45 +0000
commit05e476c941e41132d40b4bcbfcc7eea90cae7318 (patch)
treeabe5147994e8566c8c4f7f49e59378f9683df2d3 /lib/uri/generic.rb
parent396c29d1952642868874cace40615c2f1aae153b (diff)
updated uri.rb and uri/*.rb to uri-0.9.7
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/uri/generic.rb')
-rw-r--r--lib/uri/generic.rb45
1 files changed, 44 insertions, 1 deletions
diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
index 5071c1af93..73f80c946c 100644
--- a/lib/uri/generic.rb
+++ b/lib/uri/generic.rb
@@ -183,6 +183,18 @@ Object
attr_reader :opaque
attr_reader :fragment
+ # replace self by other URI object
+ def replace!(oth)
+ if self.class != oth.class
+ raise ArgumentError, "expected #{self.class} object"
+ end
+
+ component.each do |c|
+ self.__send__("#{c}=", oth.__send__(c))
+ end
+ end
+ private :replace!
+
=begin
=== Instance Methods
@@ -436,7 +448,13 @@ Object
private :check_port
def set_port(v)
- v = v.to_i if v && !v.kind_of?(Fixnum)
+ unless !v || v.kind_of?(Fixnum)
+ if v.empty?
+ v = nil
+ else
+ v = v.to_i
+ end
+ end
@port = v
end
protected :set_port
@@ -683,6 +701,7 @@ Object
=begin
--- URI::Generic#merge(rel)
+--- URI::Generic#merge!(rel)
--- URI::Generic#+(rel)
=end
@@ -750,6 +769,16 @@ Object
end
private :merge_path
+ def merge!(oth)
+ t = merge(oth)
+ if self == t
+ nil
+ else
+ replace!(t)
+ self
+ end
+ end
+
# abs(self) + rel(oth) => abs(new)
def merge(oth)
base, rel = merge0(oth)
@@ -1085,6 +1114,20 @@ Object
end
=begin
+--- URI::Generic#select(*components)
+=end
+ def select(*components)
+ components.collect do |c|
+ if component.include?(c)
+ self.send(c)
+ else
+ raise ArgumentError,
+ "expected of components of #{self.class} (#{self.class.component.join(', ')})"
+ end
+ end
+ end
+
+=begin
=end
def inspect
sprintf("#<%s:0x%x URL:%s>", self.class.to_s, self.id, self.to_s)