module CORL module Mixin module Macro module NetworkSettings def network_settings(_type) # Networks are inherited unless explicitely set define_method :network do plugin_parent end define_method :network= do |network| myself.plugin_parent = network end #--- define_method :setting do |property, default = nil, format = false| network.send("#{_type}_setting", plugin_provider, plugin_name, property, default, format) end define_method :search do |property, default = nil, format = false, lookup_settings = true| extra_groups = ( lookup_settings ? lookup_array(:settings) : [] ) network.send("search_#{_type}", plugin_provider, plugin_name, property, default, format, extra_groups) end define_method :set_setting do |property, value = nil| network.send("set_#{_type}_setting", plugin_provider, plugin_name, property, value) end define_method :delete_setting do |property| network.send("delete_#{_type}_setting", plugin_provider, plugin_name, property) end #--- define_method :[] do |name, default = nil, format = false| search(name, default, format) end #--- define_method :[]= do |name, value| set_setting(name, value) end #--- define_method :cache do network.cache end define_method :cache_setting do |keys, default = nil, format = false| cache.get([ _type, plugin_provider, plugin_name, keys ].flatten, default, format) end define_method :set_cache_setting do |keys, value| cache.set([ _type, plugin_provider, plugin_name, keys ].flatten, value) end define_method :delete_cache_setting do |keys| cache.delete([ _type, plugin_provider, plugin_name, keys ].flatten) end define_method :clear_cache do cache.delete([ _type, plugin_provider, plugin_name ]) end #--- define_method :groups do array(myself[:settings]) end #--- define_method :add_groups do |groups| myself[:settings] = array(setting(:settings)) | array(groups) end #--- define_method :remove_groups do |groups| myself[:settings] = array(setting(:settings)) - array(groups) end end end end end end