class AcceptHeaders::Language::Negotiator

Constants

HEADER_PREFIX
LANGUAGE_TAG_PATTERN

Public Instance Methods

negotiate(supported) click to toggle source
Calls superclass method AcceptHeaders::Negotiatable#negotiate
# File lib/accept_headers/language/negotiator.rb, line 12
def negotiate(supported)
  support, match = super(supported)
  return nil if support.nil? && match.nil?
  begin
    return parse(support).first
  rescue Language::Error
    return nil
  end
end

Private Instance Methods

no_header() click to toggle source
# File lib/accept_headers/language/negotiator.rb, line 23
def no_header
  [Language.new]
end
parse_item(header) click to toggle source
# File lib/accept_headers/language/negotiator.rb, line 27
def parse_item(header)
  return nil if header.nil?
  header.strip!
  language_string, q_string = header.split(';', 2)
  raise Error if language_string.nil?
  language_range = LANGUAGE_TAG_PATTERN.match(language_string)
  raise Error if language_range.nil?
  Language.new(
    language_range[:primary_tag],
    language_range[:subtag],
    q: parse_q(q_string)
  )
end