Module: Documentation::Memoized
- Included in:
- Base
- Defined in:
- lib/pdoc/parser/documentation_nodes.rb
Instance Method Summary collapse
- #avoid_infinite_method_added_loop ⇒ Object
- #memoize(method_name) ⇒ Object
- #method_added(method_name) ⇒ Object
Instance Method Details
#avoid_infinite_method_added_loop ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/pdoc/parser/documentation_nodes.rb', line 69 def avoid_infinite_method_added_loop unless @memoizing @memoizing = true yield @memoizing = false end end |
#memoize(method_name) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/pdoc/parser/documentation_nodes.rb', line 51 def memoize(method_name) sanitized_name = method_name.to_s sanitized_name = sanitized_name.sub(/!$/, '_bang') sanitized_name = sanitized_name.sub(/\?$/, '_question_mark') complete_name = "#{sanitized_name}_#{object_id.abs}" class_eval(" alias compute_\#{complete_name} \#{method_name} # alias compute_section_12235760 section\n # \n def \#{method_name} # def section\n unless defined?(@\#{complete_name}) # unless defined?(@section_12235760)\n @\#{complete_name} = compute_\#{complete_name} # @section_12235760 = compute_section_12235760\n end # end\n @\#{complete_name} # @section_12235760\n end # end\n EVAL\nend\n", __FILE__, __LINE__) |
#method_added(method_name) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/pdoc/parser/documentation_nodes.rb', line 43 def method_added(method_name) if instance_method(method_name).arity.zero? avoid_infinite_method_added_loop do memoize(method_name) end end end |