Class: Hurley::Query
- Inherits:
-
Object
show all
- Extended by:
- Forwardable
- Defined in:
- lib/hurley/query.rb
Defined Under Namespace
Classes: Flat, Nested, Pair
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(initial = nil) ⇒ Query
Returns a new instance of Query.
15
16
17
18
|
# File 'lib/hurley/query.rb', line 15
def initialize(initial = nil)
@hash = {}
update(initial) if initial
end
|
Class Method Details
.default ⇒ Object
7
8
9
|
# File 'lib/hurley/query.rb', line 7
def self.default
@default ||= Nested
end
|
.inherited(base) ⇒ Object
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/hurley/query.rb', line 79
def self.inherited(base)
super
class << base
def parse(raw_query)
q = new
q.parse_query(raw_query)
q
end
end
end
|
.parse(raw_query) ⇒ Object
11
12
13
|
# File 'lib/hurley/query.rb', line 11
def self.parse(raw_query)
default.parse(raw_query)
end
|
Instance Method Details
#inspect ⇒ Object
72
73
74
75
76
77
|
# File 'lib/hurley/query.rb', line 72
def inspect
"#<%s %s>" % [
self.class.name,
@hash.inspect,
]
end
|
#multipart? ⇒ Boolean
53
54
55
|
# File 'lib/hurley/query.rb', line 53
def multipart?
any_multipart?(@hash.values)
end
|
#parse_query(raw_query) ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'lib/hurley/query.rb', line 43
def parse_query(raw_query)
raw_query.to_s.split(AMP).each do |pair|
next if pair.empty?
escaped_key, escaped_value = pair.split(EQ, 2)
key = CGI.unescape(escaped_key)
value = escaped_value ? CGI.unescape(escaped_value) : nil
send(:decode_pair, key, value)
end
end
|
#subset_of?(url) ⇒ Boolean
30
31
32
33
34
35
|
# File 'lib/hurley/query.rb', line 30
def subset_of?(url)
query = url.respond_to?(:query) ? url.query : url
@hash.keys.all? do |key|
query[key] == @hash[key]
end
end
|
61
62
63
64
65
66
67
68
|
# File 'lib/hurley/query.rb', line 61
def to_form(options = nil)
if multipart?
boundary = (options || RequestOptions.new).boundary
return MULTIPART_TYPE % boundary, to_io(boundary)
else
return FORM_TYPE, StringIO.new(to_query_string)
end
end
|
#to_query_string ⇒ Object
Also known as:
to_s
57
58
59
|
# File 'lib/hurley/query.rb', line 57
def to_query_string
build_pairs.map!(&:to_s).join(AMP)
end
|
#update(absolute) ⇒ Object
37
38
39
40
41
|
# File 'lib/hurley/query.rb', line 37
def update(absolute)
absolute.each do |key, value|
@hash[key] = value unless key?(key)
end
end
|