class RgGen::Core::Builder::Layer
Public Class Methods
new(name)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 35 def initialize(name) @name = name @feature_registries = {} end
Public Instance Methods
add_feature_registry(name, registry)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 40 def add_feature_registry(name, registry) @feature_registries[name] = registry define_proxy_call(name) end
define_list_feature(list_names, &body)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 66 def define_list_feature(list_names, &body) Array(list_names).each do |list_name| do_proxy_call do |proxy| proxy.body(body) proxy.method_name(__method__) proxy.list_name(list_name) end end end
define_list_item_feature(list_name, feature_names, &body)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 76 def define_list_item_feature(list_name, feature_names, &body) Array(feature_names).each do |feature_name| do_proxy_call do |proxy| proxy.body(body) proxy.method_name(__method__) proxy.list_name(list_name) proxy.feature_name(feature_name) end end end
define_simple_feature(feature_names, &body)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 56 def define_simple_feature(feature_names, &body) Array(feature_names).each do |feature_name| do_proxy_call do |proxy| proxy.body(body) proxy.method_name(__method__) proxy.feature_name(feature_name) end end end
delete(feature_or_list_names = nil, feature_names = nil)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 99 def delete(feature_or_list_names = nil, feature_names = nil) @feature_registries.each_value do |registry| registry.delete(*[feature_or_list_names, feature_names].compact) end end
disable(feature_or_list_names = nil, feature_names = nil)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 93 def disable(feature_or_list_names = nil, feature_names = nil) @feature_registries.each_value do |registry| registry.disable(*[feature_or_list_names, feature_names].compact) end end
enable(feature_or_list_names, feature_names = nil)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 87 def enable(feature_or_list_names, feature_names = nil) @feature_registries.each_value do |registry| registry.enable(feature_or_list_names, feature_names) end end
Private Instance Methods
define_proxy_call(name)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 107 def define_proxy_call(name) define_singleton_method(name) do |&body| @proxy.register_execution(@feature_registries[__method__], &body) end end
do_proxy_call(&block)
click to toggle source
# File lib/rggen/core/builder/layer.rb, line 113 def do_proxy_call(&block) @proxy = Proxy.new(&block) @proxy.execute(self) remove_instance_variable(:@proxy) end