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.
-
#mime ⇒ Object
:api: private.
-
#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.
:api: private
417 418 419 420 421 422 423 424 425 426 427 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 417 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 @quality *= (mime && mime[:default_quality] || 1) end |
Instance Attribute Details
#index ⇒ Object (readonly)
Returns the value of attribute index.
408 409 410 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 408 def index @index end |
#media_range ⇒ Object (readonly)
Returns the value of attribute media_range.
408 409 410 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 408 def media_range @media_range end |
#quality ⇒ Object (readonly)
Returns the value of attribute quality.
408 409 410 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 408 def quality @quality end |
#sub_type ⇒ Object (readonly)
Returns the value of attribute sub_type.
408 409 410 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 408 def sub_type @sub_type end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
408 409 410 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 408 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.
:api: private
440 441 442 443 444 445 446 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 440 def <=>(entry) if entry.quality == quality @index <=> entry.index else entry.quality <=> @quality end end |
#==(entry) ⇒ Object
An alias for eql?.
:api: private
465 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 465 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.
:api: private
458 459 460 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 458 def eql?(entry) synonyms.include?(entry.media_range) end |
#hash ⇒ Object
Returns
- Fixnum
-
A hash based on the super range.
:api: private
471 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 471 def hash; super_range.hash; end |
#mime ⇒ Object
:api: private
488 489 490 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 488 def mime @mime ||= Merb.available_mime_types[Merb::ResponderMixin::MIMES[@media_range]] 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.
:api: private
498 499 500 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 498 def super_range synonyms.first || @media_range end |
#synonyms ⇒ Object
478 479 480 481 482 483 484 485 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 478 def synonyms return @syns if @syns if _mime = mime @syns = _mime[:accepts] else @syns = [] end end |
#to_s ⇒ Object
Returns
- String
-
The accept type as a string, i.e. the media range.
:api: private
515 516 517 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 515 def to_s @media_range end |
#to_sym ⇒ Object
Returns
Symbol: The type as a symbol, e.g. :html.
:api: private
506 507 508 509 |
# File 'lib/merb-core/controller/mixins/responder.rb', line 506 def to_sym Merb.available_mime_types.select{|k,v| v[:accepts] == synonyms || v[:accepts][0] == synonyms[0]}.flatten.first end |