Sha256: f2a55561831b0353679bd0d9ebe7961019e006b60158680b5a48033c3e78e873

Contents?: true

Size: 666 Bytes

Versions: 3

Compression:

Stored size: 666 Bytes

Contents

module AcceptHeaders
  module Acceptable
    class Error < StandardError; end
    class InvalidQError < Error; end

    attr_reader :q

    def match(other)
      raise NotImplementedError.new("#match is not implemented")
    end

    def q=(value)
      begin
        q_float = Float(value)
      rescue ArgumentError => e
        raise InvalidQError.new(e.message)
      end
      if !q_float.between?(0.0, 1.0)
        raise InvalidQError.new("q must be between 0 and 1")
      end
      if q_float.to_s.match(/^\d\.(\d+)$/) && $1 && $1.size > 3
        raise InvalidQError.new("q must be at most 3 decimal places")
      end
      @q = q_float
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
accept_headers-0.0.4 lib/accept_headers/acceptable.rb
accept_headers-0.0.3 lib/accept_headers/acceptable.rb
accept_headers-0.0.2 lib/accept_headers/acceptable.rb