Sha256: 274a83e6cf36f2a1c99f10555c927119056697e1594c8ef4b6c957d9c8412328
Contents?: true
Size: 878 Bytes
Versions: 5
Compression:
Stored size: 878 Bytes
Contents
module AcceptHeaders module Acceptable class Error < StandardError; end class InvalidQError < Error; end attr_reader :q def reject?(other) if q != 0.0 false else match(other) end end def accept?(other) if q == 0.0 false else match(other) end 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 def match(other) raise NotImplementedError.new("#match is not implemented") end end end
Version data entries
5 entries across 5 versions & 1 rubygems