Class: HTTP::Accept::MediaTypes::MediaRange
- Inherits:
-
Struct
- Object
- Struct
- HTTP::Accept::MediaTypes::MediaRange
- Defined in:
- lib/http/accept/media_types.rb
Overview
A single entry in the Accept: header, which includes a mime type and associated parameters.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#parameters ⇒ Object
Returns the value of attribute parameters.
-
#subtype ⇒ Object
Returns the value of attribute subtype.
-
#type ⇒ Object
Returns the value of attribute type.
Class Method Summary collapse
- .parse(scanner, normalize_whitespace = true) ⇒ Object
- .parse_parameters(scanner, normalize_whitespace) ⇒ Object
Instance Method Summary collapse
- #===(other) ⇒ Object
- #mime_type ⇒ Object
- #parameters_string ⇒ Object
- #quality_factor ⇒ Object
- #split(*args) ⇒ Object
- #to_s ⇒ Object (also: #to_str)
Instance Attribute Details
#parameters ⇒ Object
Returns the value of attribute parameters
40 41 42 |
# File 'lib/http/accept/media_types.rb', line 40 def parameters @parameters end |
#subtype ⇒ Object
Returns the value of attribute subtype
40 41 42 |
# File 'lib/http/accept/media_types.rb', line 40 def subtype @subtype end |
#type ⇒ Object
Returns the value of attribute type
40 41 42 |
# File 'lib/http/accept/media_types.rb', line 40 def type @type end |
Class Method Details
.parse(scanner, normalize_whitespace = true) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/http/accept/media_types.rb', line 92 def self.parse(scanner, normalize_whitespace = true) return to_enum(:parse, scanner, normalize_whitespace) unless block_given? while scanner.scan(MIME_TYPE) type = scanner[:type] subtype = scanner[:subtype] parameters = parse_parameters(scanner, normalize_whitespace) yield self.new(type, subtype, parameters) # Are there more? break unless scanner.scan(/\s*,\s*/) end raise ParseError.new("Could not parse entire string!") unless scanner.eos? end |
.parse_parameters(scanner, normalize_whitespace) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/http/accept/media_types.rb', line 75 def self.parse_parameters(scanner, normalize_whitespace) parameters = {} while scanner.scan(PARAMETER) key = scanner[:key] # If the regular expression PARAMETER matched, it must be one of these two: if value = scanner[:value] parameters[key] = value elsif quoted_value = scanner[:quoted_value] parameters[key] = QuotedString.unquote(quoted_value, normalize_whitespace) end end return parameters end |
Instance Method Details
#===(other) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/http/accept/media_types.rb', line 49 def === other if other.is_a? self.class super else return self.mime_type === other end end |
#mime_type ⇒ Object
57 58 59 |
# File 'lib/http/accept/media_types.rb', line 57 def mime_type "#{type}/#{subtype}" end |
#parameters_string ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/http/accept/media_types.rb', line 41 def parameters_string return '' if parameters == nil or parameters.empty? parameters.collect do |key, value| "; #{key.to_s}=#{QuotedString.quote(value.to_s)}" end.join end |
#quality_factor ⇒ Object
67 68 69 |
# File 'lib/http/accept/media_types.rb', line 67 def quality_factor parameters.fetch('q', 1.0).to_f end |
#split(*args) ⇒ Object
71 72 73 |
# File 'lib/http/accept/media_types.rb', line 71 def split(*args) return [type, subtype] end |
#to_s ⇒ Object Also known as: to_str
61 62 63 |
# File 'lib/http/accept/media_types.rb', line 61 def to_s "#{type}/#{subtype}#{parameters_string}" end |