Class: Merb::AcceptType
- Defined in:
- lib/merb-core/controller/mixins/responder.rb
Instance Attribute Summary collapse
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#media_range ⇒ Object
readonly
Returns the value of attribute media_range.
-
#quality ⇒ Object
readonly
Returns the value of attribute quality.
-
#sub_type ⇒ Object
readonly
Returns the value of attribute sub_type.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Instance Method Summary collapse
-
#<=>(entry) ⇒ Object
Compares two accept types for sorting purposes.
-
#==(entry) ⇒ Object
An alias for eql?.
-
#eql?(entry) ⇒ Boolean
Parameters entry<AcceptType>:: The accept type to compare.
-
#hash ⇒ Object
Returns Fixnum:: A hash based on the super range.
-
#initialize(entry, index) ⇒ AcceptType
constructor
Parameters entry<String>:: The accept type pattern index<Fixnum>:: The index used for sorting accept types.
-
#super_range ⇒ Object
Returns String:: The primary media range for this accept type, i.e.
-
#synonyms ⇒ Object
Returns Array:: All Accept header values, such as “text/html”, that match this type.
-
#to_s ⇒ Object
Returns String:: The accept type as a string, i.e.
-
#to_sym ⇒ Object
Returns Symbol: The type as a symbol, e.g.
Constructor Details
#initialize(entry, index) ⇒ AcceptType
Parameters
- entry<String>
-
The accept type pattern
- index<Fixnum>
-
The index used for sorting accept types. A lower value indicates higher priority.
390 391 392 393 394 395 396 397 398 399 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 390 def initialize(entry,index) @index = index entry =~ /\s*([^;\s]*)\s*(;\s*q=\s*(.*))?/ @media_range, quality = $1, $3 @type, @sub_type = @media_range.split(%r{/}) (quality ||= 0.0) if @media_range == "*/*" @quality = quality ? (quality.to_f * 100).to_i : 100 end |
Instance Attribute Details
#index ⇒ Object (readonly)
Returns the value of attribute index.
383 384 385 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 383 def index @index end |
#media_range ⇒ Object (readonly)
Returns the value of attribute media_range.
383 384 385 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 383 def media_range @media_range end |
#quality ⇒ Object (readonly)
Returns the value of attribute quality.
383 384 385 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 383 def quality @quality end |
#sub_type ⇒ Object (readonly)
Returns the value of attribute sub_type.
383 384 385 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 383 def sub_type @sub_type end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
383 384 385 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 383 def type @type end |
Instance Method Details
#<=>(entry) ⇒ Object
Compares two accept types for sorting purposes.
Parameters
- entry<AcceptType>
-
The accept type to compare.
Returns
- Fixnum
-
-1, 0 or 1, depending on whether entry has a lower, equal or higher priority than the accept type being compared.
410 411 412 413 414 415 416 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 410 def <=>(entry) if entry.quality == quality @index <=> entry.index else entry.quality <=> @quality end end |
#==(entry) ⇒ Object
An alias for eql?.
431 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 431 def ==(entry); eql?(entry); end |
#eql?(entry) ⇒ Boolean
Parameters
- entry<AcceptType>
-
The accept type to compare.
Returns
- Boolean
-
True if the accept types are equal, i.e. if the synonyms for this accept type includes the entry media range.
426 427 428 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 426 def eql?(entry) synonyms.include?(entry.media_range) end |
#hash ⇒ Object
Returns
- Fixnum
-
A hash based on the super range.
435 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 435 def hash; super_range.hash; end |
#super_range ⇒ Object
Returns
- String
-
The primary media range for this accept type, i.e. either the first synonym or, if none exist, the media range.
453 454 455 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 453 def super_range synonyms.first || @media_range end |
#synonyms ⇒ Object
Returns
- Array
-
All Accept header values, such as “text/html”, that match this type.
440 441 442 443 444 445 446 447 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 440 def synonyms return @syns if @syns if mime = Merb.available_mime_types[Merb::ResponderMixin::MIMES[@media_range]] @syns = mime[:accepts] else @syns = [] end end |
#to_s ⇒ Object
Returns
- String
-
The accept type as a string, i.e. the media range.
466 467 468 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 466 def to_s @media_range end |
#to_sym ⇒ Object
Returns
Symbol: The type as a symbol, e.g. :html.
459 460 461 462 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 459 def to_sym Merb.available_mime_types.select{|k,v| v[:accepts] == synonyms || v[:accepts][0] == synonyms[0]}.flatten.first end |