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}?$/
Class Method Summary collapse
-
.mixin(klass) ⇒ Object
:startdoc:.
Instance Method Summary collapse
-
#initialize(query_str = '') ⇒ Query
constructor
A new instance of Query.
- #param_separator ⇒ Object
- #param_separator=(v) ⇒ Object
- #params ⇒ Object
- #to_uri(separator = @param_separator) ⇒ Object (also: #to_s)
Constructor Details
#initialize(query_str = '') ⇒ Query
Returns a new instance of Query.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/uri/component/query.rb', line 99 def initialize(query_str='') unless query_str =~ RE_COMPONENT raise InvalidURIError, "bad Query component for URI: #{query_str}" end @params = QueryParamsHash.new @params.default_proc = Proc.new {|hash, key| hash[key] = [] unless hash.key?(key) } @param_separator = '&' query_str.split(/[&;]/).each do |param| next if param.empty? name, value = param.split('=', 2).map do |v| CGI.unescape(v) end @params[name] ||= [] @params[name] << value ? value : nil end end |
Class Method Details
.mixin(klass) ⇒ Object
:startdoc:
94 95 96 97 |
# File 'lib/uri/component/query.rb', line 94 def self.mixin(klass) #:nodoc: QueryMixin.__send__(:append_features, klass) QueryMixin.__send__(:included, klass) end |
Instance Method Details
#param_separator ⇒ Object
124 125 126 |
# File 'lib/uri/component/query.rb', line 124 def param_separator return @param_separator end |
#param_separator=(v) ⇒ Object
128 129 130 |
# File 'lib/uri/component/query.rb', line 128 def param_separator=(v) @param_separator = v end |
#params ⇒ Object
120 121 122 |
# File 'lib/uri/component/query.rb', line 120 def params return @params end |
#to_uri(separator = @param_separator) ⇒ Object Also known as: to_s
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/uri/component/query.rb', line 132 def to_uri(separator=@param_separator) 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 |