Class: GunDog::TraceReport
- Inherits:
-
Object
- Object
- GunDog::TraceReport
- Defined in:
- lib/gun_dog/trace_report.rb
Instance Attribute Summary collapse
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
Class Method Summary collapse
Instance Method Summary collapse
- #as_json ⇒ Object
- #call_records ⇒ Object
- #collaborating_classes ⇒ Object
- #finalize_report ⇒ Object
- #finalized? ⇒ Boolean
- #find_call_record(doc_name) ⇒ Object
-
#initialize(klass) ⇒ TraceReport
constructor
A new instance of TraceReport.
- #method_list ⇒ Object
- #save(filename) ⇒ Object
- #stack ⇒ Object
- #to_json ⇒ Object
Constructor Details
#initialize(klass) ⇒ TraceReport
Returns a new instance of TraceReport.
26 27 28 |
# File 'lib/gun_dog/trace_report.rb', line 26 def initialize(klass) @klass = klass end |
Instance Attribute Details
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
3 4 5 |
# File 'lib/gun_dog/trace_report.rb', line 3 def klass @klass end |
Class Method Details
.from_json(json) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/gun_dog/trace_report.rb', line 10 def self.from_json(json) tr = new(nil) tr.instance_eval do @klass = Kernel.const_get(json['klass']) @stack = TraceStack.from_json(json.slice('klass','collaborating_classes')) @call_records = json['call_records'].map { |cr| CallRecord.from_json(cr) } end tr end |
.load(filename) ⇒ Object
5 6 7 8 |
# File 'lib/gun_dog/trace_report.rb', line 5 def self.load(filename) json = MultiJson.load(File.open(filename, 'r') { |f| f.read }) from_json(json) end |
Instance Method Details
#as_json ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/gun_dog/trace_report.rb', line 53 def as_json { "klass" => klass, "collaborating_classes" => .to_a, "call_records" => call_records.map(&:as_json) } end |
#call_records ⇒ Object
22 23 24 |
# File 'lib/gun_dog/trace_report.rb', line 22 def call_records @call_records ||= [] end |
#collaborating_classes ⇒ Object
30 31 32 |
# File 'lib/gun_dog/trace_report.rb', line 30 def stack. - [GunDog, klass] end |
#finalize_report ⇒ Object
38 39 40 41 42 |
# File 'lib/gun_dog/trace_report.rb', line 38 def finalize_report @call_records.freeze @stack.clear.freeze @finalized = true end |
#finalized? ⇒ Boolean
44 45 46 |
# File 'lib/gun_dog/trace_report.rb', line 44 def finalized? !!@finalized end |
#find_call_record(doc_name) ⇒ Object
65 66 67 68 |
# File 'lib/gun_dog/trace_report.rb', line 65 def find_call_record(doc_name) @find_cache ||= @call_records.group_by(&:method_location) @find_cache[doc_name] end |
#method_list ⇒ Object
70 71 72 |
# File 'lib/gun_dog/trace_report.rb', line 70 def method_list @call_records.map(&:method_location) end |
#save(filename) ⇒ Object
48 49 50 |
# File 'lib/gun_dog/trace_report.rb', line 48 def save(filename) File.open(filename, 'w') { |f| f.puts(to_json) } end |
#stack ⇒ Object
34 35 36 |
# File 'lib/gun_dog/trace_report.rb', line 34 def stack @stack ||= TraceStack.new(klass) end |
#to_json ⇒ Object
61 62 63 |
# File 'lib/gun_dog/trace_report.rb', line 61 def to_json MultiJson.dump(as_json) end |