Module: EverydayMenu::MyAccessors

Included in:
Menu, MenuItem
Defined in:
lib/everyday-menu/utils.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.common_names(name) ⇒ Object



129
130
131
132
133
# File 'lib/everyday-menu/utils.rb', line 129

def self.common_names(name)
  var_name = :"@#{name.to_s}"
  name2    = name_to_key(name)
  return name2, var_name
end

.def_getter(name, do_is = false) ⇒ Object



139
140
141
142
143
144
# File 'lib/everyday-menu/utils.rb', line 139

def self.def_getter(name, do_is = false)
  var_name, isName, name2, name2_is = getter_names(name)
  block                             = ->() { self.instance_variable_get(var_name) }
  define_methods(name, name2, &block)
  define_methods(isName, name2_is, &block) if do_is
end

.def_setter(name) ⇒ Object



146
147
148
149
150
# File 'lib/everyday-menu/utils.rb', line 146

def self.def_setter(name)
  var_name, setName, name_e, name2_e = setter_names(name)
  block                              = ->(val) { self.instance_variable_set(var_name, val) }
  define_methods(name_e, setName, name2_e, &block)
end

.define_methods(*names, &block) ⇒ Object



135
136
137
# File 'lib/everyday-menu/utils.rb', line 135

def self.define_methods(*names, &block)
  names.each { |name| define_method(name, &block) }
end

.fill_options(obj, options) ⇒ Object



101
102
103
# File 'lib/everyday-menu/utils.rb', line 101

def self.fill_options(obj, options)
  options.each { |option| obj[option[0]] = option[1] }
end

.getter_names(name) ⇒ Object



114
115
116
117
118
119
# File 'lib/everyday-menu/utils.rb', line 114

def self.getter_names(name)
  name2, var_name = common_names(name)
  isName          = :"#{key_to_name(name, 'is')}"
  name2_is        = :"#{name2.to_s}?"
  return var_name, isName, name2, name2_is
end

.key_to_name(key, prefix = nil) ⇒ Object



105
106
107
108
# File 'lib/everyday-menu/utils.rb', line 105

def self.key_to_name(key, prefix = nil)
  rval = WeakRef.new(WeakRef.new(key.to_s).gsub(/_(\w)/) { |_| WeakRef.new(WeakRef.new($1).upcase) })
  prefix.nil? ? rval : WeakRef.new("#{prefix}#{WeakRef.new(WeakRef.new(rval[0]).upcase)}#{WeakRef.new(rval[1..-1])}")
end

.my_attr_accessor(*names) ⇒ Object



152
153
154
155
156
157
# File 'lib/everyday-menu/utils.rb', line 152

def self.my_attr_accessor(*names)
  names.each { |name|
    def_getter(name)
    def_setter(name)
  }
end

.my_attr_accessor_bool(*names) ⇒ Object



159
160
161
162
163
164
# File 'lib/everyday-menu/utils.rb', line 159

def self.my_attr_accessor_bool(*names)
  names.each { |name|
    def_getter(name, true)
    def_setter(name)
  }
end

.my_attr_reader(*names) ⇒ Object



166
167
168
169
170
# File 'lib/everyday-menu/utils.rb', line 166

def self.my_attr_reader(*names)
  names.each { |name|
    def_getter(name)
  }
end

.my_attr_reader_bool(*names) ⇒ Object



172
173
174
175
176
# File 'lib/everyday-menu/utils.rb', line 172

def self.my_attr_reader_bool(*names)
  names.each { |name|
    def_getter(name, true)
  }
end

.my_attr_writer(*names) ⇒ Object



178
179
180
181
182
# File 'lib/everyday-menu/utils.rb', line 178

def self.my_attr_writer(*names)
  names.each { |name|
    def_setter(name)
  }
end

.name_to_key(name) ⇒ Object



110
111
112
# File 'lib/everyday-menu/utils.rb', line 110

def self.name_to_key(name)
  WeakRef.new(WeakRef.new(name.to_s).gsub(/A-Z/) { |c| WeakRef.new(WeakRef.new(c).downcase) }).to_sym
end

.setter_names(name) ⇒ Object



121
122
123
124
125
126
127
# File 'lib/everyday-menu/utils.rb', line 121

def self.setter_names(name)
  name2, var_name = common_names(name)
  setName         = :"#{key_to_name(name, 'set')}"
  name_e          = :"#{name.to_s}="
  name2_e         = :"#{name2.to_s}="
  return var_name, setName, name_e, name2_e
end

.setup_obj(obj, label, title, options) ⇒ Object



95
96
97
98
99
# File 'lib/everyday-menu/utils.rb', line 95

def self.setup_obj(obj, label, title, options)
  obj[:label] = label
  obj[:title] = title
  fill_options(obj, options)
end

Instance Method Details

#[](key) ⇒ Object



86
87
88
# File 'lib/everyday-menu/utils.rb', line 86

def [](key)
  get_val(self.class.key_to_name(key))
end

#[]=(key, value) ⇒ Object



90
91
92
# File 'lib/everyday-menu/utils.rb', line 90

def []=(key, value)
  set_val(self.class.key_to_name(key, 'set'), value)
end

#get_val(name) ⇒ Object



70
71
72
# File 'lib/everyday-menu/utils.rb', line 70

def get_val(name)
  self.respond_to?(name) ? self.send(name) : self.containedObject.send(name)
end

#has(key) ⇒ Object



78
79
80
# File 'lib/everyday-menu/utils.rb', line 78

def has(key)
  get_val(self.class.key_to_name(key, 'has'))
end

#is(key) ⇒ Object



82
83
84
# File 'lib/everyday-menu/utils.rb', line 82

def is(key)
  get_val(self.class.key_to_name(key, 'is'))
end

#set_val(name, value) ⇒ Object



74
75
76
# File 'lib/everyday-menu/utils.rb', line 74

def set_val(name, value)
  self.respond_to?(name) ? self.send(name, value) : self.containedObject.send(name, value)
end