Sha256: dfaf68a3dca292f85b453bc167f075ea5f112046f1d78d0c6b2e398f6aefabd3
Contents?: true
Size: 1.16 KB
Versions: 3
Compression:
Stored size: 1.16 KB
Contents
module ROM # @api private module Configurable class Config WRITER_REGEXP = /=$/.freeze attr_reader :settings # @api private def initialize @settings = {} end # @api public def [](name) public_send(name) end # @api private def key?(name) settings.key?(name) end # @api private def freeze settings.each_value { |value| value.freeze } super end # @api private def respond_to_missing?(name, include_private = false) true end private # @api private def method_missing(meth, *args, &block) return settings.fetch(meth, nil) if frozen? name = meth.to_s key = name.gsub(WRITER_REGEXP, '').to_sym if writer?(name) settings[key] = args.first else settings.fetch(key) { settings[key] = self.class.new } end end # @api private def writer?(name) ! WRITER_REGEXP.match(name).nil? end end def config @config ||= Config.new end # @api public def configure yield(config) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rom-0.9.1 | lib/rom/support/configurable.rb |
rom-0.9.0 | lib/rom/support/configurable.rb |
rom-0.9.0.rc1 | lib/rom/support/configurable.rb |