Class: URI::Component::Query
- Inherits:
-
Object
- Object
- URI::Component::Query
- Defined in:
- lib/uri/component/query.rb
Overview
Handle a query component in an URI as an object
Constant Summary collapse
- RE_COMPONENT =
:stopdoc:
/^#{URI::REGEXP::PATTERN::QUERY}?$/
- DEFAULT_PARAM_SEPARATOR =
:startdoc:
'&'
Class Method Summary collapse
-
.mixin(klass) ⇒ Object
:nodoc:.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #clear ⇒ Object
-
#initialize(query_str = nil) ⇒ Query
constructor
A new instance of Query.
- #param_separator ⇒ Object
- #param_separator=(v) ⇒ Object
-
#params ⇒ Object
Returns query parameters as an URI::Component::QueryParamsHash object.
- #to_uri(separator = @param_separator) ⇒ Object (also: #to_s)
Constructor Details
#initialize(query_str = nil) ⇒ Query
Returns a new instance of Query.
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/uri/component/query.rb', line 149 def initialize(query_str=nil) unless !query_str || query_str =~ RE_COMPONENT raise InvalidURIError, "bad Query component for URI: #{query_str}" end @params = QueryParamsHash.new @param_separator = DEFAULT_PARAM_SEPARATOR if query_str @params.nil = false query_str.split(/[&;]/).each do |param| next if param.nil? name, value = param.split('=', 2).map do |v| CGI.unescape(v) end @params[name] ||= [] @params[name] << value ? value : nil end end end |
Class Method Details
.mixin(klass) ⇒ Object
:nodoc:
144 145 146 147 |
# File 'lib/uri/component/query.rb', line 144 def self.mixin(klass) #:nodoc: QueryMixin.__send__(:append_features, klass) QueryMixin.__send__(:included, klass) end |
Instance Method Details
#[](key) ⇒ Object
174 175 176 |
# File 'lib/uri/component/query.rb', line 174 def [](key) return @params[key] end |
#clear ⇒ Object
170 171 172 |
# File 'lib/uri/component/query.rb', line 170 def clear @params.clear end |
#param_separator ⇒ Object
183 184 185 |
# File 'lib/uri/component/query.rb', line 183 def param_separator return @param_separator end |
#param_separator=(v) ⇒ Object
187 188 189 |
# File 'lib/uri/component/query.rb', line 187 def param_separator=(v) @param_separator = v end |
#params ⇒ Object
Returns query parameters as an URI::Component::QueryParamsHash object
179 180 181 |
# File 'lib/uri/component/query.rb', line 179 def params return @params end |
#to_uri(separator = @param_separator) ⇒ Object Also known as: to_s
191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/uri/component/query.rb', line 191 def to_uri(separator=@param_separator) return nil unless @params.nil? query = [] @params.each do |name, values| name = CGI.escape(name) values.each do |value| query << "#{name}#{'=' + CGI.escape(value.to_s) if value}" end end return query.join(separator) end |