Class: RubyModKit::MemoPad
- Inherits:
-
Object
- Object
- RubyModKit::MemoPad
- Defined in:
- lib/ruby_mod_kit/memo_pad.rb
Overview
The class for bundling memos.
Instance Attribute Summary collapse
- #def_parents_memo ⇒ Object readonly
-
#flags ⇒ Object
: Hash[Symbol, bool].
-
#methods_memo ⇒ Object
readonly
: Hash[Integer, Memo::MethodMemo].
-
#overloads_memo ⇒ Object
readonly
: Hash[Integer, Memo::OverloadMemo].
-
#parameters_memo ⇒ Object
readonly
: Hash[Integer, Memo::ParameterMemo].
Instance Method Summary collapse
- #def_parent_memo(def_parent_node) ⇒ Memo::DefParentMemo
- #delete(*args) ⇒ Object
- #each_parameter_memo(&block) ⇒ void
- #initialize ⇒ void constructor
- #method_memo(def_node) ⇒ Memo::MethodMemo
- #overload_memo(offset, name) ⇒ Memo::OverloadMemo
- #parameter_memo(node) ⇒ Memo::ParameterMemo
- #succ(offset_diff) ⇒ void
Constructor Details
#initialize ⇒ void
22 23 24 25 26 27 28 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 22 def initialize @def_parents_memo = {} @methods_memo = {} @parameters_memo = {} @overloads_memo = {} @flags = Hash.new(false) end |
Instance Attribute Details
#def_parents_memo ⇒ Object (readonly)
14 15 16 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 14 def def_parents_memo @def_parents_memo end |
#flags ⇒ Object
: Hash[Symbol, bool]
18 19 20 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 18 def flags @flags end |
#methods_memo ⇒ Object (readonly)
: Hash[Integer, Memo::MethodMemo]
15 16 17 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 15 def methods_memo @methods_memo end |
#overloads_memo ⇒ Object (readonly)
: Hash[Integer, Memo::OverloadMemo]
17 18 19 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 17 def overloads_memo @overloads_memo end |
#parameters_memo ⇒ Object (readonly)
: Hash[Integer, Memo::ParameterMemo]
16 17 18 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 16 def parameters_memo @parameters_memo end |
Instance Method Details
#def_parent_memo(def_parent_node) ⇒ Memo::DefParentMemo
50 51 52 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 50 def def_parent_memo(def_parent_node) @def_parents_memo[def_parent_node.offset] ||= Memo::DefParentMemo.new(def_parent_node) end |
#delete(*args) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 86 def delete(*args) case args in [Memo::ParameterMemo => parameter_memo] @parameters_memo.delete(parameter_memo.offset) in [Memo::MethodMemo => method_memo] method_memo.parameters.each do |parameter_memo| # rubocop:disable Lint/ShadowingOuterLocalVariable delete(parameter_memo) end @methods_memo.delete(method_memo.offset) end end |
#each_parameter_memo(&block) ⇒ void
This method returns an undefined value.
102 103 104 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 102 def each_parameter_memo(&block) parameters_memo.each_value(&block) end |
#method_memo(def_node) ⇒ Memo::MethodMemo
58 59 60 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 58 def method_memo(def_node) @methods_memo[def_node.offset] ||= Memo::MethodMemo.new(def_node) end |
#overload_memo(offset, name) ⇒ Memo::OverloadMemo
68 69 70 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 68 def overload_memo(offset, name) @overloads_memo[offset] ||= Memo::OverloadMemo.new(offset, name) end |
#parameter_memo(node) ⇒ Memo::ParameterMemo
76 77 78 79 80 81 82 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 76 def parameter_memo(node) memo = @parameters_memo[node.offset] ||= Memo::ParameterMemo.new(node.offset) def_node = node.def_node_at(node.offset) raise RubyModKit::Error unless def_node.is_a?(Node::DefNode) method_memo(def_node).add_parameter(memo) end |
#succ(offset_diff) ⇒ void
This method returns an undefined value.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/ruby_mod_kit/memo_pad.rb', line 34 def succ(offset_diff) [@methods_memo, @parameters_memo, @def_parents_memo, @overloads_memo].each do |offset_node_memo| new_offset_node_memo = {} offset_node_memo.each_value do |node_memo| node_memo.succ(offset_diff) new_offset_node_memo[node_memo.offset] = node_memo end offset_node_memo.replace(new_offset_node_memo) end self end |