Class: Orthoses::Trace::Attribute
- Inherits:
-
Object
- Object
- Orthoses::Trace::Attribute
- Includes:
- Targetable
- Defined in:
- lib/orthoses/trace/attribute.rb
Defined Under Namespace
Modules: Hook
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(loader, patterns:, sort_union_types: true) ⇒ Attribute
constructor
A new instance of Attribute.
Methods included from Targetable
Constructor Details
#initialize(loader, patterns:, sort_union_types: true) ⇒ Attribute
Returns a new instance of Attribute.
26 27 28 29 30 31 32 |
# File 'lib/orthoses/trace/attribute.rb', line 26 def initialize(loader, patterns:, sort_union_types: true) @loader = loader @patterns = patterns @sort_union_types = sort_union_types @captured_dict = Hash.new { |h, k| h[k] = Hash.new { |hh, kk| hh[kk] = [] } } end |
Instance Method Details
#call ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/orthoses/trace/attribute.rb', line 34 def call ::Module.prepend(Hook) store = build_trace_hook.enable(target: Hook.instance_method(:attr)) do build_trace_hook.enable(target: Hook.instance_method(:attr_accessor)) do build_trace_hook.enable(target: Hook.instance_method(:attr_reader)) do build_trace_hook.enable(target: Hook.instance_method(:attr_writer)) do @loader.call end end end end @captured_dict.each do |mod_name, captures| captures.each do |(kind, prefix, name), types| types.sort! if @sort_union_types injected = Utils::TypeList.new(types).inject store[mod_name] << "#{kind} #{prefix}#{name}: #{injected}" end end store end |