class Thinreports::Core::Format::Base
@abstract
Public Class Methods
config_accessor(*configs, &block)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 28 def config_accessor(*configs, &block) config_reader(*configs, &block) config_writer(*configs) end
config_checker(check, *configs)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 15 def config_checker(check, *configs) checker = ->(val) { val == check } each_configs(*configs) do |m, location| define_read_method(:"#{m}?", location, &checker) end end
config_reader(*configs, &block)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 9 def config_reader(*configs, &block) each_configs(*configs) do |m, location| define_read_method(m, location, &block) end end
config_writer(*configs)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 22 def config_writer(*configs) each_configs(*configs) do |m, location| define_write_method(m, location) end end
new(config, &block)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 55 def initialize(config, &block) @config = config block.call(self) if ::Kernel.block_given? end
Private Class Methods
define_read_method(m, location = nil, &block)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 35 def define_read_method(m, location = nil, &block) define_method(m) do read(*location, &block) end end
define_write_method(m, location = nil)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 41 def define_write_method(m, location = nil) define_method(:"#{m}=") do |value| write(value, *location) end end
each_configs(*configs, &block)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 47 def each_configs(*configs, &block) c = configs.first.is_a?(::Hash) ? configs.first : (configs || []) c.each do |m, location| block.call(m, location || [m.to_s]) end end
Public Instance Methods
attributes()
click to toggle source
# File lib/thinreports/core/format/base.rb, line 60 def attributes @config end
Private Instance Methods
find(*keys)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 66 def find(*keys) if keys.empty? @config else keys.inject(@config) do |c, k| c.is_a?(::Hash) ? c[k] : (break c) end end end
read(*keys, &block)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 82 def read(*keys, &block) value = find(*keys) ::Kernel.block_given? ? block.call(value) : value end
write(value, *keys)
click to toggle source
# File lib/thinreports/core/format/base.rb, line 76 def write(value, *keys) key = keys.pop owner = find(*keys) owner[key] = value end