class Coupdoeil::Popover::OptionsSet

def custom_animation? = options[:animation].to_s == "custom"

def custom_animation? = options[:animation].to_s == "custom"

def dup = OptionsSet.new(options.deep_dup)

def dup = OptionsSet.new(options.deep_dup)

def initialize(options = {})

def initialize(options = {})
  options.assert_valid_keys(OPTION_NAMES)
  @options = options
end

def merge(options_set)

def merge(options_set)
  OptionsSet.new(options.merge(options_set.options))
end

def preload? = options[:loading].to_s == "preload"

def preload? = options[:loading].to_s == "preload"

def to_base36

def to_base36
  @to_base36 ||= begin
    shift = 0
    ORDERED_OPTIONS.reverse.sum do |option|
      bits = option.into_bits(options[option.key])
      result = bits << shift
      shift += option.bit_size
      result
    end.to_s(36).freeze
  end
end

def to_h = options

def to_h = options

def validate!

def validate!
  ORDERED_OPTIONS.map do |option|
    next unless options.key?(option.key)
    value = options[option.key]
    option.new(value).validate!
  end
end

def validate! = nil # no-op

no-op
def validate! = nil # no-op