dependencytree 0.1.9 → 0.2.0

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: 4efad431a904a49f9448b793b4fdc592a50f22ad
4
- data.tar.gz: 46224be0e106949a71bd0b0910d05b7762e8ca66
3
+ metadata.gz: 032404568b7d87d3d295c46e0921f9c032191e15
4
+ data.tar.gz: 087adb18c59ddf0ea55d9848c06dc60ac2737423
5
5
  SHA512:
6
- metadata.gz: 90ae8e89bcea3dcce411df85277ad8f0ebbb69f286f7865b3db4ee8f140874c6c87952d043b5c0d974ceac6bce539f1c472c25c6e25d1f2941a01c0bf366bd4d
7
- data.tar.gz: dac83e7b2865d5d2a14af560012d595d7f02261fb5f82612bff5dff3aac070f5b73667c8cb70bc267b9fdf475d35763ae630e5d08fffcbb44fe9f6e7cd5ccacf
6
+ metadata.gz: a013abcb8dcb256c6481cd80561d3eafa1294f7538038502394aeaf07cfb3ce316605162ed741901ce79c56d7e5a5eacdd4c57b15558052f19b05100030a5041
7
+ data.tar.gz: 7ae649613f10e3fbc78646eb0f742cf7f28fc1dcf31f4c60e6ba95fe47f233ee083d97d982becab39ecd20cd3794c59cae0331980c87b51dec753a1ee5733338
@@ -12,6 +12,8 @@ module Dependencytree
12
12
  attr_reader :path
13
13
  attr_reader :constant_names
14
14
  attr_reader :method_names
15
+ attr_reader :parent
16
+ attr_reader :full_name_array
15
17
 
16
18
  attr_reader :resolved_references
17
19
  attr_reader :unresolved_references
@@ -63,7 +63,45 @@ module Dependencytree
63
63
 
64
64
  @@log.debug("Resolving reference array #{reference_array.to_s} as reference #{reference_part.to_s} and constant #{constant_name}")
65
65
 
66
- refered_class_model = resolve_reference_direct(referer_class_model, reference_part)
66
+ refered_class_model = nil
67
+
68
+ # qualified (Foo::CONST) or unqualified (CONST) reference?
69
+
70
+ # try to resolve absolute (Outer::Inner1::Inner2::CONST)
71
+ if reference_part.length > 0
72
+ @@log.debug("Trying to resolve absolute")
73
+ refered_class_model = resolve_reference_direct(referer_class_model, reference_part)
74
+ end
75
+
76
+ # try to resolve relative (Inner1::Inner2::CONST)
77
+ if !refered_class_model && reference_part.length > 0
78
+ @@log.debug("Trying to resolve relative")
79
+ current = referer_class_model
80
+ while !refered_class_model && current
81
+ full_name_array = current.full_name_array
82
+ if full_name_array.last(reference_part.length) == reference_part
83
+ refered_class_model = current
84
+ break
85
+ end
86
+ current = current.parent
87
+ end
88
+ end
89
+
90
+ # try to resolve unqualified (CONST)
91
+ if !refered_class_model && reference_part.length == 0
92
+ @@log.debug("Trying to resolve unqualified")
93
+ current_class = referer_class_model
94
+ i = 0
95
+ while (current_class) && (!refered_class_model) do
96
+ @@log.debug("Current class #{i} is #{current_class.full_name}")
97
+
98
+ refered_class_model = current_class if current_class.constant_names.include?(constant_name)
99
+
100
+ current_class = current_class.parent
101
+ i += 1
102
+ end
103
+ end
104
+
67
105
  if refered_class_model
68
106
  @@log.debug("Found reference to possible parent #{reference_part.to_s}")
69
107
  if refered_class_model.constant_names.include? constant_name.to_sym
@@ -74,6 +112,7 @@ module Dependencytree
74
112
  nil
75
113
  end
76
114
  else
115
+ @@log.warn("No refered class model for #{reference_part.to_s}")
77
116
  nil
78
117
  end
79
118
  end
@@ -60,7 +60,7 @@ module Dependencytree
60
60
 
61
61
  if options[:debug]
62
62
  log = Logger.new('dependencytree.log')
63
- log.level = Logger::WARN
63
+ log.level = Logger::DEBUG
64
64
  else
65
65
  log = Logger.new(STDOUT)
66
66
  log.level = Logger::WARN
@@ -1,3 +1,3 @@
1
1
  module Dependencytree
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependencytree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephan Fuhrmann