uri-component 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -41,10 +41,14 @@ module URI
41
41
  end
42
42
  end
43
43
 
44
+ def escape(v)
45
+ return URI.escape(v, RE_UNSAFE)
46
+ end
47
+
44
48
  def to_uri
45
49
  return '' if @nodes.empty?
46
50
  return '/' + @nodes.map do |node|
47
- URI.escape(node, RE_UNSAFE)
51
+ self.escape(node)
48
52
  end.join('/')
49
53
  end
50
54
  alias to_s to_uri
@@ -10,6 +10,81 @@ require 'cgi'
10
10
 
11
11
  module URI
12
12
  module Component
13
+ class QueryParamsHash < Hash #:nodoc:
14
+ def convert_key(key)
15
+ return key.kind_of?(String) ? key : key.to_s
16
+ end
17
+ def [](key)
18
+ super(self.convert_key(key))
19
+ end
20
+ def fetch(key, default = nil)
21
+ super(self.convert_key(key), default)
22
+ end
23
+
24
+ def values(key = nil)
25
+ return key ? self[key] : super
26
+ end
27
+
28
+ def values=(key, values)
29
+ self[key] = values
30
+ end
31
+
32
+ def value(key)
33
+ return self[key][0]
34
+ end
35
+
36
+ def value=(key, value)
37
+ self[key] = value
38
+ end
39
+
40
+ def values_at(*keys)
41
+ super(*keys.map {|key| self.convert_key(key)})
42
+ end
43
+
44
+ def []=(key, values)
45
+ values = [values] unless values.kind_of?(Array)
46
+ super(self.convert_key(key), values)
47
+ end
48
+ def store(key, values)
49
+ self[key] = values
50
+ end
51
+
52
+ def delete(key)
53
+ super(self.convert_key(key))
54
+ end
55
+
56
+ def has_key?(key)
57
+ super(self.convert_key(key))
58
+ end
59
+ alias :include? :has_key?
60
+ alias :key? :has_key?
61
+ alias :member? :has_key?
62
+
63
+ def merge(hash)
64
+ hash_new = self.class.new
65
+ hash.each do |key, value|
66
+ hash_new[key] = value
67
+ end
68
+ return hash_new
69
+ end
70
+
71
+ def merge!(hash)
72
+ hash.each do |key, value|
73
+ self[key] = value
74
+ end
75
+ return self
76
+ end
77
+ alias :update :merge!
78
+
79
+ def replace(hash)
80
+ self.clear
81
+ hash.each do |key, value|
82
+ self[key] = value
83
+ end
84
+ return self
85
+ end
86
+ end
87
+
13
88
  ## Handle a query component in an URI as an object
14
89
  class Query
15
90
  #:stopdoc:
@@ -26,7 +101,7 @@ module URI
26
101
  raise InvalidURIError, "bad Query component for URI: #{query_str}"
27
102
  end
28
103
 
29
- @params = {}
104
+ @params = QueryParamsHash.new
30
105
  @params.default_proc = Proc.new {|hash, key|
31
106
  hash[key] = [] unless hash.key?(key)
32
107
  }
@@ -26,7 +26,7 @@ module URI
26
26
  UserInfoMixin.__send__(:included, klass)
27
27
  end
28
28
 
29
- def self.escape(v)
29
+ def escape(v)
30
30
  return URI.escape(v, RE_UNSAFE)
31
31
  end
32
32
 
@@ -80,9 +80,9 @@ module URI
80
80
  return nil unless @user
81
81
 
82
82
  info_str = ''
83
- info_str += self.class.escape(@domain) + ';' if @domain
84
- info_str += @user ? self.class.escape(@user) : '';
85
- info_str += ':' + self.class.escape(@password) if @password
83
+ info_str += self.escape(@domain) + ';' if @domain
84
+ info_str += @user ? self.escape(@user) : '';
85
+ info_str += ':' + self.escape(@password) if @password
86
86
  return info_str
87
87
  end
88
88
  alias to_s to_uri
@@ -113,8 +113,8 @@ module URI
113
113
  return nil unless user
114
114
 
115
115
  domain = @userinfo_component.domain
116
- user_uri = domain ? URI::Component::UserInfo.escape(domain) + ';' : ''
117
- user_uri += URI::Component::UserInfo.escape(user)
116
+ user_uri = domain ? @userinfo_component.escape(domain) + ';' : ''
117
+ user_uri += @userinfo_component.escape(user)
118
118
  return user_uri
119
119
  end
120
120
 
@@ -130,7 +130,7 @@ module URI
130
130
 
131
131
  def password
132
132
  pass = @userinfo_component.password
133
- return pass ? URI::Component::UserInfo.escape(pass) : nil
133
+ return pass ? @userinfo_component.escape(pass) : nil
134
134
  end
135
135
 
136
136
  def password=(pass_uri)
@@ -1,6 +1,6 @@
1
1
  module URI
2
2
  module Component
3
- VERSION = "0.0.2" ## :nodoc:
3
+ VERSION = "0.0.3" ## :nodoc:
4
4
  end
5
5
  end
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri-component
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-04 00:00:00.000000000 Z
12
+ date: 2011-11-05 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Handle URI components as an object
15
15
  email: