Module: CORL::Mixin::Macro::NetworkSettings

Defined in:
lib/core/mixin/macro/network_settings.rb

Instance Method Summary collapse

Instance Method Details

#network_settings(_type) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/core/mixin/macro/network_settings.rb', line 7

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, extra_groups = []|
    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