Module: Rabbit::Element::Base::DrawHook
- Included in:
- Rabbit::Element::Base
- Defined in:
- lib/rabbit/element/base/draw-hook.rb
Constant Summary collapse
- @@draw_hook_names =
[]
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.def_draw_hook(klass, name) ⇒ Object
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 |
# File 'lib/rabbit/element/base/draw-hook.rb', line 8 def def_draw_hook(klass, name) @@draw_hook_names << name base_name = "#{name}_draw_proc" var_name = "@#{base_name}s" klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1) def add_#{base_name}(name=nil, &block) #{var_name} << [block, name] block end def delete_#{base_name}(name=nil, &block) #{var_name}.reject! do |blk,| blk == block end end def delete_#{base_name}_by_name(name) #{var_name}.reject! do |_, nm| name === nm end end def clear_#{base_name}s #{var_name} = [] end def #{base_name}s(name) #{var_name}.find_all do |_, nm| name === nm end end def #{base_name}(name) #{var_name}.find do |_, nm| name === nm end end EOC end |
.def_draw_hooks(klass, *names) ⇒ Object
48 49 50 51 52 |
# File 'lib/rabbit/element/base/draw-hook.rb', line 48 def def_draw_hooks(klass, *names) names.each do |name| klass.def_draw_hook(name) end end |
Instance Method Details
#clear_draw_procs ⇒ Object
67 68 69 70 71 |
# File 'lib/rabbit/element/base/draw-hook.rb', line 67 def clear_draw_procs @@draw_hook_names.each do |name| __send__("clear_#{name}_draw_procs") end end |