module Temple::Mixins::Options

def self.included(base)

def self.included(base)
  base.class_eval do
    extend ClassOptions
    extend ThreadOptions
  end
end

def initialize(opts = {})

def initialize(opts = {})
  self.class.options.validate_map!(opts)
  self.class.options.validate_map!(self.class.thread_options) if self.class.thread_options
  @options = ImmutableMap.new({}.update(self.class.options).update(self.class.thread_options || {}).update(opts))
end