trace_tree 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ed16dd1d28ade745f6747ea00c37cb6c2339e2a
4
- data.tar.gz: f8fea91ae5169fc4459dd4a4940f38d83f151936
3
+ metadata.gz: ecfcbcac41a1a8ec231bc7c72ea1263e8c046e47
4
+ data.tar.gz: 8a7041736a6b9944c85bb294027308f9fdaddacf
5
5
  SHA512:
6
- metadata.gz: 21de039bb2b3f511347ce7bb5e96373f23ba7ae303f7d6ac629c28ebbba506458b9f262ee4b793006c90de9d95b7356278c303dc1afa636e3916873f65399a41
7
- data.tar.gz: 5d3257a13fce2dfa510141e844241e363ec1ab7ddd319f1040c827d696183b161ec7ecfdeea999af1e018ec492edf339e94162251ab4daf659df0937cf0c6423
6
+ metadata.gz: 7fff3e8f0fcc69ba556033c9f527309d3b38d5dbae074da4dff962782afc804e0a63449d8fd0b10ebaf6d0efdf233c6e0fdf5fcc5b2991dc765e490d89809b92
7
+ data.tar.gz: 13bcc734c2dde452234e6b1865f054c46253f40d6a5139380c657e6d714e7e3e4fd05b67555459850f9206adf7a6d2b8dc6f9c583cf961482e3ce2a6f343ce05
data/README.md CHANGED
@@ -41,6 +41,7 @@ end
41
41
  * `file == STDOUT` by default. You can give it a File object or anything responds to `puts`.
42
42
  * `:color => true` by default. It makes method names have different color than source_location in output. When you print the output to file, you may want to set it false to discard those color ANSI escape sequences.
43
43
  * `:gem => true` by default. Replace the gem paths in source_location with $GemPathN, can make the lines shorter. To see what are replaced, inspect `TraceTree::GemPaths`.
44
+ * `:html => nil` by default. Set it true to generate a html in which a tree constructed with `<ul>`, `<li>`.
44
45
 
45
46
  ### Example
46
47
 
@@ -1,26 +1,11 @@
1
- require 'tree_graph'
1
+ require 'trace_tree/tree_graphable'
2
+ require 'trace_tree/tree_htmlable'
2
3
 
3
4
  class TraceTree
4
5
  class Node
5
6
 
6
- include TreeGraph
7
-
8
- def parent_for_tree_graph
9
- parent
10
- end
11
-
12
- def is_last_for_tree_graph
13
- return true unless parent
14
- parent.callees.index(self) == (parent.callees.count - 1)
15
- end
16
-
17
- def label_for_tree_graph
18
- "#{class_and_method} #{source_location}"
19
- end
20
-
21
- def children_for_tree_graph
22
- callees
23
- end
7
+ include TreeGraphable
8
+ include TreeHtmlable
24
9
 
25
10
  attr_reader :bindings
26
11
  attr_accessor :parent
@@ -0,0 +1,25 @@
1
+ require 'tree_graph'
2
+
3
+ class TraceTree
4
+ module TreeGraphable
5
+
6
+ include TreeGraph
7
+
8
+ def parent_for_tree_graph
9
+ parent
10
+ end
11
+
12
+ def is_last_for_tree_graph
13
+ return true unless parent
14
+ parent.callees.index(self) == (parent.callees.count - 1)
15
+ end
16
+
17
+ def label_for_tree_graph
18
+ "#{class_and_method} #{source_location}"
19
+ end
20
+
21
+ def children_for_tree_graph
22
+ callees
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ require 'tree_html'
2
+
3
+ class TraceTree
4
+ module TreeHtmlable
5
+
6
+ include TreeHtml
7
+
8
+ def label_for_tree_html
9
+ "<span class='highlight'>#{class_and_method}</span> #{source_location}"
10
+ end
11
+
12
+ def children_for_tree_html
13
+ callees
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  class TraceTree
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/trace_tree.rb CHANGED
@@ -4,40 +4,38 @@ require 'trace_tree/node'
4
4
  require 'trace_tree/short_gem_path'
5
5
  require 'trace_tree/color'
6
6
 
7
+ class Binding
8
+ def trace_tree *log, **opt, &to_do
9
+ TraceTree.new(self).generate *log, **opt, &to_do
10
+ end
11
+ end
12
+
7
13
  class TraceTree
8
14
 
9
- def self.sort stack
10
- hash = {}
11
- stack.each do |call|
12
- unless hash.empty?
13
- parent = hash[call.parent_stack]
14
- parent << call if parent
15
- end
16
- hash[call.whole_stack] = call
17
- end
18
- stack[0]
15
+ def initialize bi
16
+ @bi = bi
17
+ @trace_points = []
19
18
  end
20
19
 
21
- end
22
-
23
- class Binding
24
- def trace_tree *log, **opt, &to_do
25
- log = log.empty? ? STDOUT : log[0]
20
+ def generate *log, **opt, &to_do
21
+ @log = log.empty? ? STDOUT : log[0]
26
22
  node_class = optional_node opt
23
+ @build = opt[:html] ? [:tree_html_full, '.highlight{color: blue;}'] : [:tree_graph]
27
24
 
28
- trace_points = []
29
25
  tp = TracePoint.trace(:call, :b_call, :raise, :c_call) do |point|
30
26
  trace_points << node_class.new(point) if wanted? point
31
27
  end
32
28
 
33
- eval('self').instance_eval &to_do
29
+ bi.eval('self').instance_eval &to_do
34
30
  ensure
35
31
  tp.disable
36
- _dump_trace_tree log, trace_points
32
+ dump_trace_tree
37
33
  end
38
34
 
39
35
  private
40
36
 
37
+ attr_reader :bi, :trace_points, :log, :build
38
+
41
39
  def optional_node opt
42
40
  Class.new TraceTree::Node do
43
41
  prepend TraceTree::ShortGemPath unless opt[:gem] == false
@@ -45,15 +43,26 @@ class Binding
45
43
  end
46
44
  end
47
45
 
48
- def _dump_trace_tree log, trace_points
49
- tree = TraceTree.
50
- sort(trace_points).
51
- tree_graph
52
-
46
+ def dump_trace_tree
47
+ tree = sort(trace_points).send *build
53
48
  log.puts tree
54
49
  end
55
50
 
56
51
  def wanted? trace_point
57
52
  trace_point.event != :c_call or trace_point.method_id == :throw
58
53
  end
54
+
55
+ def sort stack
56
+ hash = {}
57
+ stack.each do |call|
58
+ unless hash.empty?
59
+ parent = hash[call.parent_stack]
60
+ parent << call if parent
61
+ end
62
+ hash[call.whole_stack] = call
63
+ end
64
+ stack[0]
65
+ end
66
+
59
67
  end
68
+
data/trace_tree.gemspec CHANGED
@@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency "binding_of_callers", "0.1.3"
28
28
  spec.add_dependency "tree_graph", "~> 0.1.0"
29
+ spec.add_dependency "tree_html", "~> 0.1.0"
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trace_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ken
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-13 00:00:00.000000000 Z
11
+ date: 2017-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: tree_html
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.1.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.1.0
83
97
  description:
84
98
  email:
85
99
  - block24block@gmail.com
@@ -101,6 +115,8 @@ files:
101
115
  - lib/trace_tree/gem_paths.rb
102
116
  - lib/trace_tree/node.rb
103
117
  - lib/trace_tree/short_gem_path.rb
118
+ - lib/trace_tree/tree_graphable.rb
119
+ - lib/trace_tree/tree_htmlable.rb
104
120
  - lib/trace_tree/version.rb
105
121
  - trace_tree.gemspec
106
122
  homepage: https://github.com/turnon/trace_tree