module Configurable
Modified from Sinatra Provide flexible configuration for Midori
Server
Public Instance Methods
set(option, value = (not_set = true), read_only = false)
click to toggle source
Sets an option to the given value. @param [Symbol] option the name of config @param [Object] value value to the name @param [Boolean] read_only Generate option= method or not @return [nil] nil
# File lib/midori/core_ext/configurable.rb, line 10 def set(option, value = (not_set = true), read_only = false) raise ArgumentError if not_set setter = proc { |val| set option, val } getter = proc { value } define_singleton("#{option}=", setter) unless read_only define_singleton(option, getter) define_singleton("#{option}?", "!!#{option}") unless method_defined? "#{option}?" self end
Private Instance Methods
define_singleton(name, content = Proc.new)
click to toggle source
Dynamically defines a method on settings. @param [String] name method name @param [Proc] content method content @return [nil] nil
# File lib/midori/core_ext/configurable.rb, line 27 def define_singleton(name, content = Proc.new) singleton_class.class_eval do undef_method(name) if method_defined? name String === content ? class_eval("def #{name}() #{content}; end") : define_method(name, &content) end end