Module: Stomper::Support::Ruby1_9::Headers
- Defined in:
- lib/stomper/support/1.9/headers.rb
Overview
The implementation of the Headers class for Ruby 1.9
Instance Method Summary collapse
-
#[](name) ⇒ String?
Gets the principle header value paired with the supplied header name.
-
#[]=(name, val) ⇒ String
Sets the header value paired with the supplied header name.
-
#all_values(name) ⇒ Array
(also: #all)
Retrieves all header values associated with the supplied header name.
-
#append(name, val) ⇒ String
Appends a header value to the specified header name.
-
#delete(name) ⇒ Array
Deletes all of the header values associated with the header name and removes the header name itself.
-
#each {|name, value| ... } ⇒ Headers, Enumerator
Iterates over each header name / value pair in the order in which the headers names were set.
-
#has?(name) ⇒ Boolean
(also: #key?, #include?)
Returns true if a header value has been set for the supplied header name.
-
#initialize(headers = {}) ⇒ Object
Creates a new headers collection, initialized with the optional hash parameter.
-
#merge!(hash) ⇒ Object
Merges a hash into this collection of headers.
-
#names ⇒ Array<String>
An array of header names ordered by when they were set.
-
#reverse_merge!(hash) ⇒ Object
Reverse merges a hash into this collection of headers.
Instance Method Details
#[](name) ⇒ String?
Gets the principle header value paired with the supplied header name. The name will be converted to a Symbol, so must respond to the to_sym
method. The Stomp 1.1 protocol specifies that in the event of a repeated header name, the first value encountered serves as the principle value.
108 109 110 111 |
# File 'lib/stomper/support/1.9/headers.rb', line 108 def [](name) name = name.to_sym @values[name] && @values[name].first end |
#[]=(name, val) ⇒ String
Sets the header value paired with the supplied header name. The name will be converted to a Symbol and must respond to to_sym
; meanwhile, the value will be converted to a String so must respond to to_s
. Setting a header value in this fashion will overwrite any repeated header values.
125 126 127 128 129 130 |
# File 'lib/stomper/support/1.9/headers.rb', line 125 def []=(name, val) name = name.to_sym val = val.to_s @values[name] = [val] val end |
#all_values(name) ⇒ Array Also known as: all
Retrieves all header values associated with the supplied header name. In general, this will be an array containing only the principle header value; however, in the event a frame contained repeated header names, this method will return all of the associated values. The first element of the array will be the principle value of the supplied header name.
58 59 60 |
# File 'lib/stomper/support/1.9/headers.rb', line 58 def all_values(name) @values[name.to_sym] || [] end |
#append(name, val) ⇒ String
Appends a header value to the specified header name. If the specified header name is not known, the supplied value will also become the principle value. This method is used internally when constructing frames sent by the broker to capture repeated header names.
90 91 92 93 94 95 96 |
# File 'lib/stomper/support/1.9/headers.rb', line 90 def append(name, val) name = name.to_sym val = val.to_s @values[name] ||= [] @values[name] << val val end |
#delete(name) ⇒ Array
Deletes all of the header values associated with the header name and removes the header name itself. This is analogous to the delete
method found in Hash objects.
72 73 74 |
# File 'lib/stomper/support/1.9/headers.rb', line 72 def delete(name) @values.delete name.to_sym end |
#each {|name, value| ... } ⇒ Headers, Enumerator
Iterates over each header name / value pair in the order in which the headers names were set. If this collection contains repeated header names, the supplied block will receive those header names repeatedly, once for each value. If no block is supplied, then an Enumerator
is returned. All header names yielded through this method will be Strings and not the Symbol keys used internally.
153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/stomper/support/1.9/headers.rb', line 153 def each(&block) if block_given? @values.each do |name, vals| name_str = name.to_s vals.each do |val| yield [name_str, val] end end self else ::Enumerator.new(self) end end |
#has?(name) ⇒ Boolean Also known as: key?, include?
Returns true if a header value has been set for the supplied header name.
39 40 41 |
# File 'lib/stomper/support/1.9/headers.rb', line 39 def has?(name) @values.key? name.to_sym end |
#initialize(headers = {}) ⇒ Object
Creates a new headers collection, initialized with the optional hash parameter.
9 10 11 12 |
# File 'lib/stomper/support/1.9/headers.rb', line 9 def initialize(headers={}) @values = {} merge! headers end |
#merge!(hash) ⇒ Object
Merges a hash into this collection of headers. All of the keys used in the hash must be convertable to Symbols through to_sym
.
17 18 19 |
# File 'lib/stomper/support/1.9/headers.rb', line 17 def merge!(hash) hash.each { |k, v| self[k]= v } end |
#names ⇒ Array<String>
An array of header names ordered by when they were set.
169 |
# File 'lib/stomper/support/1.9/headers.rb', line 169 def names; @values.keys; end |
#reverse_merge!(hash) ⇒ Object
Reverse merges a hash into this collection of headers. The hash keys and values are included only if the headers collection does not already have a matching key. All of the keys used in the hash must be convertable to Symbols through to_sym
.
26 27 28 29 30 |
# File 'lib/stomper/support/1.9/headers.rb', line 26 def reverse_merge!(hash) hash.each { |k, v| self[k]= v unless has?(k) } end |