kurangu 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/signature.rb +26 -0
  3. data/lib/trace.rb +7 -9
  4. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7752f5414ccab463481b345ff7200e814fb5859a
4
- data.tar.gz: b47108ea9f4cd426311d641d6807a6cf48bd2ac5
3
+ metadata.gz: 5cfb85b2a2f72f69b01f58ffaef7c0eae1fe01c5
4
+ data.tar.gz: 1d17f5760af0cfc989c7adc7628f01a0fb0a80c9
5
5
  SHA512:
6
- metadata.gz: a07563548226e345a01eda0373b3ab2becf85f9bfa43be17882a7ddaa4c91e46179c02f2486a841dbb6f16f1a9701be5267abb8dc2efacb163e6fcdd09fb5c42
7
- data.tar.gz: c0fee84605fa788d50f1a59e7e4d5e1a30b965b31aa213dfa262dbdcd789a6a9af5169e6a1d5d14528b7cc6671c9700246cc925d5b52b634bf877666b116a9bb
6
+ metadata.gz: f9a05c8bb9f336e8f520b998fd7a43bbe54112b72f70da38758e197bd5109a42ba5af505c632e1f58fa0e74628598bced5bc3eadcc114fd2df825c5e64a5c27f
7
+ data.tar.gz: 1d5ef8c578cbb9c8f605fee4f7e0ede8c344e359057ca37c07f035aadca524fe2117b45fa922bf3886c8fae9e77dabd64f1ae864f62335b1431756756f5ab180
data/lib/signature.rb ADDED
@@ -0,0 +1,26 @@
1
+ class MethodSignature
2
+ def initialize(line, parameters)
3
+ @line = line
4
+ @parameters = parameters
5
+ # For each parameter signature (key), store a set of return types (value)
6
+ @signatures = Hash.new { | h, k | h[k] = Set.new }
7
+ end
8
+
9
+ def generate_parameter_signature(parameter_types)
10
+ joined_parameters = @parameters.map { |arg| parameter_types[arg] }
11
+ joined_parameters.join(", ")
12
+ end
13
+
14
+ def to_s
15
+ signatures = @signatures.to_a.map { |a|
16
+ "#{@line} type '(#{a[0]}) -> #{a[1].to_a.join(" or ")}'"
17
+ }
18
+ signatures.join("\n")
19
+ end
20
+
21
+ def add(parameter_types, return_type)
22
+ parameter_signature = generate_parameter_signature(parameter_types)
23
+ @signatures[parameter_signature].add(return_type)
24
+ end
25
+
26
+ end
data/lib/trace.rb CHANGED
@@ -1,24 +1,19 @@
1
1
  require 'set'
2
+ require 'signature'
2
3
 
3
4
  INPUT_FILE = $stdin.readline.chomp
4
5
 
5
6
  stack = Hash.new { |h, k| h[k] = [] }
6
- parameter_list = Hash.new { |h, k| h[k] = [] }
7
- signatures = Array.new
7
+ signatures = Hash.new
8
8
  paths = Set.new
9
9
 
10
- def generate_signature(line, parameters, parameter_types, return_type)
11
- joined_parameters = parameters.map { |arg| parameter_types[arg] }
12
- "#{line} type '(#{joined_parameters.join(", ")}) -> #{return_type}'"
13
- end
14
-
15
10
  def write_annotations_paths(dir, paths)
16
11
  paths_file = "#{dir}/annotations_paths.txt"
17
12
  IO.write(paths_file, paths.to_a.join("\n"))
18
13
  end
19
14
 
20
15
  def write_annotations(path, signatures)
21
- IO.write(path, signatures.join("\n"))
16
+ IO.write(path, signatures.values.join("\n"))
22
17
  end
23
18
 
24
19
  trace_return = TracePoint.new(:return) do |t|
@@ -28,7 +23,10 @@ trace_return = TracePoint.new(:return) do |t|
28
23
  if args
29
24
  parameter_list = t.self.method(t.method_id).parameters.map { |a | a[1] }
30
25
  line = t.self.method(t.method_id).source_location[1]
31
- signatures.push generate_signature(line, parameter_list, args, t.return_value.class)
26
+ if !signatures.key?(s)
27
+ signatures[s] = MethodSignature.new(line, parameter_list)
28
+ end
29
+ signatures[s].add(args, t.return_value.class)
32
30
  path = "#{t.path}.annotations"
33
31
  dir = File.dirname(t.path)
34
32
  write_annotations_paths(dir, paths.add(path))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kurangu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arpith Siromoney
@@ -19,6 +19,7 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - bin/kurangu
21
21
  - lib/kurangu.rb
22
+ - lib/signature.rb
22
23
  - lib/trace.rb
23
24
  homepage: https://github.com/arpith/kurangu
24
25
  licenses: