Sha256: 28e9c42df13b2fd7523abef8c1486d9d916619ffcd49791e616ec7921a422495

Contents?: true

Size: 971 Bytes

Versions: 20

Compression:

Stored size: 971 Bytes

Contents

##
# Modified from Sinatra
# Provide flexible configuration for Midori Server
module Configurable
  # 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
  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

  # Dynamically defines a method on settings.
  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
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
em-midori-0.2.0 lib/midori/core_ext/configurable.rb
em-midori-0.1.12 lib/midori/core_ext/configurable.rb
em-midori-0.1.11 lib/midori/core_ext/configurable.rb
em-midori-0.1.10 lib/midori/core_ext/configurable.rb
em-midori-0.1.9 lib/midori/core_ext/configurable.rb
em-midori-0.1.8 lib/midori/core_ext/configurable.rb
em-midori-0.1.7.1 lib/midori/core_ext/configurable.rb
em-midori-0.1.7 lib/midori/core_ext/configurable.rb
em-midori-0.1.6.1 lib/midori/core_ext/configurable.rb
em-midori-0.1.6 lib/midori/core_ext/configurable.rb
em-midori-0.1.5.4 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.5.3 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.5.2 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.5.1 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.5 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.4.1 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.4 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.3 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.2 lib/em-midori/core_ext/configurable.rb
em-midori-0.1.1 lib/em-midori/core_ext/configurable.rb