diver_down 0.0.1.alpha14 → 0.0.1.alpha16
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.
- checksums.yaml +4 -4
- data/exe/diver_down_web +2 -3
- data/lib/diver_down/version.rb +1 -1
- data/lib/diver_down/web/action.rb +92 -105
- data/lib/diver_down/web/definition_filter.rb +112 -0
- data/lib/diver_down/web/definition_module_dependencies.rb +79 -0
- data/lib/diver_down/web/definition_to_dot.rb +50 -105
- data/lib/diver_down/web/metadata/source_metadata.rb +14 -13
- data/lib/diver_down/web/metadata.rb +6 -1
- data/lib/diver_down/web.rb +44 -29
- data/web/assets/DyDCovOQ.css +1 -0
- data/web/assets/bundle.js +135 -134
- data/web/index.html +1 -1
- metadata +6 -5
- data/lib/diver_down/web/module_sources_filter.rb +0 -54
- data/web/assets/CFQbqqGu.css +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88a43fc4236cb489ca44a9105db9ad3750f53a2929a9153db564e20d3f4e2fee
|
4
|
+
data.tar.gz: 589ab5cce7bfdee343a4c3d967a7aece57ff1d389d3700af222579c450a13a42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eda67006560b775d12e582afa991b789d727f2d947ad82cab470408690ab682133c34d433309467ae67637472de1cc82f246e6618c4cbc36f2a5e7f8d6bb555f
|
7
|
+
data.tar.gz: e116e4edbcd125c4a56e8641cbda5b6427ce4c6beaa86935a1339fabb9ff3db14d6bd9319538cf2643d270d1b8ee6019b74bc70089e14820511f05c7578f2079
|
data/exe/diver_down_web
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
|
4
4
|
require 'bundler/setup'
|
5
5
|
require 'rack/contrib'
|
6
|
-
require 'webrick'
|
7
6
|
require 'diver_down'
|
8
7
|
require 'diver_down-web'
|
9
8
|
require 'optparse'
|
@@ -47,9 +46,9 @@ begin
|
|
47
46
|
# Rack 2.0
|
48
47
|
require 'rack'
|
49
48
|
require 'rack/server'
|
50
|
-
Rack::Server.new(app
|
49
|
+
Rack::Server.new(app:).start
|
51
50
|
rescue LoadError
|
52
51
|
# Rack 3.0
|
53
52
|
require 'rackup'
|
54
|
-
Rackup::Server.new(app
|
53
|
+
Rackup::Server.new(app:).start
|
55
54
|
end
|
data/lib/diver_down/version.rb
CHANGED
@@ -12,14 +12,18 @@ module DiverDown
|
|
12
12
|
:per
|
13
13
|
)
|
14
14
|
|
15
|
+
M = Mutex.new
|
16
|
+
|
17
|
+
attr_reader :store
|
18
|
+
|
15
19
|
# @param store [DiverDown::Definition::Store]
|
16
20
|
# @param metadata [DiverDown::Web::Metadata]
|
17
|
-
|
18
|
-
def initialize(store:, metadata:, request:)
|
21
|
+
def initialize(store:, metadata:)
|
19
22
|
@store = store
|
20
23
|
@metadata = metadata
|
21
24
|
@source_alias_resolver = DiverDown::Web::SourceAliasResolver.new(@metadata.source_alias)
|
22
|
-
@
|
25
|
+
@module_dependency_map = nil
|
26
|
+
@module_dependency_map_cache_id = nil
|
23
27
|
end
|
24
28
|
|
25
29
|
# GET /api/source_aliases.json
|
@@ -61,15 +65,11 @@ module DiverDown
|
|
61
65
|
def sources
|
62
66
|
source_names = Set.new
|
63
67
|
|
64
|
-
|
65
|
-
|
66
|
-
definition.sources.each do |source|
|
67
|
-
source_names.add(source.source_name)
|
68
|
-
end
|
68
|
+
@store.combined_definition.sources.each do |source|
|
69
|
+
source_names.add(source.source_name)
|
69
70
|
end
|
70
|
-
# rubocop:enable Style/HashEachMethods
|
71
71
|
|
72
|
-
classified_sources_count = source_names.count { @metadata.source(_1).
|
72
|
+
classified_sources_count = source_names.count { @metadata.source(_1).module? }
|
73
73
|
|
74
74
|
json(
|
75
75
|
sources: source_names.sort.map do |source_name|
|
@@ -79,9 +79,7 @@ module DiverDown
|
|
79
79
|
source_name:,
|
80
80
|
resolved_alias: @metadata.source_alias.resolve_alias(source_name),
|
81
81
|
memo: source_metadata.memo,
|
82
|
-
|
83
|
-
{ module_name: }
|
84
|
-
end,
|
82
|
+
module: source_metadata.module,
|
85
83
|
}
|
86
84
|
end,
|
87
85
|
classified_sources_count:
|
@@ -91,70 +89,71 @@ module DiverDown
|
|
91
89
|
# GET /api/modules.json
|
92
90
|
def modules
|
93
91
|
# Hash{ DiverDown::Definition::Modulee => Set<Integer> }
|
94
|
-
|
92
|
+
modules = Set.new
|
95
93
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
modules = @metadata.source(source.source_name).modules
|
100
|
-
module_set.add(modules) unless modules.empty?
|
101
|
-
end
|
94
|
+
@store.combined_definition.sources.each do |source|
|
95
|
+
modulee = @metadata.source(source.source_name).module
|
96
|
+
modules.add(modulee) unless modulee.nil?
|
102
97
|
end
|
103
|
-
# rubocop:enable Style/HashEachMethods
|
104
98
|
|
105
99
|
json(
|
106
|
-
modules:
|
107
|
-
_1.map do |module_name|
|
108
|
-
{
|
109
|
-
module_name:,
|
110
|
-
}
|
111
|
-
end
|
112
|
-
end
|
100
|
+
modules: modules.sort
|
113
101
|
)
|
114
102
|
end
|
115
103
|
|
116
|
-
# GET /api/modules/:
|
117
|
-
# @param
|
118
|
-
def module(
|
119
|
-
|
120
|
-
related_definition_store_ids = Set.new
|
121
|
-
source_names = Set.new
|
122
|
-
|
123
|
-
# rubocop:disable Style/HashEachMethods
|
124
|
-
@store.each do |_, definition|
|
125
|
-
definition.sources.each do |source|
|
126
|
-
source_module_names = @metadata.source(source.source_name).modules
|
127
|
-
|
128
|
-
next unless source_module_names[0..module_names.size - 1] == module_names
|
104
|
+
# GET /api/modules/:modulee.json
|
105
|
+
# @param modulee [String]
|
106
|
+
def module(modulee)
|
107
|
+
module_dependency_map = fetch_module_dependency_map
|
129
108
|
|
130
|
-
|
131
|
-
related_definition_store_ids.add(definition.store_id)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
# rubocop:enable Style/HashEachMethods
|
135
|
-
|
136
|
-
if related_definition_store_ids.empty?
|
109
|
+
unless module_dependency_map.key?(modulee)
|
137
110
|
return not_found
|
138
111
|
end
|
139
112
|
|
140
|
-
|
113
|
+
module_dependency = module_dependency_map.fetch(modulee)
|
141
114
|
|
142
115
|
json(
|
143
|
-
|
116
|
+
module: modulee,
|
117
|
+
module_dependencies: module_dependency.module_dependencies.compact.sort,
|
118
|
+
module_reverse_dependencies: module_dependency.module_reverse_dependencies.compact.sort,
|
119
|
+
sources: module_dependency.sources.map do |source|
|
144
120
|
{
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
121
|
+
source_name: source.source_name,
|
122
|
+
module: @metadata.source(source.source_name).module,
|
123
|
+
memo: @metadata.source(source.source_name).memo,
|
124
|
+
dependencies: source.dependencies.map do |dependency|
|
125
|
+
{
|
126
|
+
source_name: dependency.source_name,
|
127
|
+
module: @metadata.source(dependency.source_name).module,
|
128
|
+
method_ids: dependency.method_ids.sort.map do |method_id|
|
129
|
+
{
|
130
|
+
context: method_id.context,
|
131
|
+
name: method_id.name,
|
132
|
+
paths: method_id.paths.sort,
|
133
|
+
}
|
134
|
+
end,
|
135
|
+
}
|
136
|
+
end,
|
152
137
|
}
|
153
138
|
end,
|
154
|
-
|
139
|
+
source_reverse_dependencies: module_dependency.source_reverse_dependencies.map do |source|
|
155
140
|
{
|
156
|
-
|
157
|
-
|
141
|
+
source_name: source.source_name,
|
142
|
+
module: @metadata.source(source.source_name).module,
|
143
|
+
memo: @metadata.source(source.source_name).memo,
|
144
|
+
dependencies: source.dependencies.map do |dependency|
|
145
|
+
{
|
146
|
+
source_name: dependency.source_name,
|
147
|
+
module: @metadata.source(dependency.source_name).module,
|
148
|
+
method_ids: dependency.method_ids.sort.map do |method_id|
|
149
|
+
{
|
150
|
+
context: method_id.context,
|
151
|
+
name: method_id.name,
|
152
|
+
paths: method_id.paths.sort,
|
153
|
+
}
|
154
|
+
end,
|
155
|
+
}
|
156
|
+
end,
|
158
157
|
}
|
159
158
|
end
|
160
159
|
)
|
@@ -178,7 +177,7 @@ module DiverDown
|
|
178
177
|
definition_group: definition.definition_group,
|
179
178
|
title: definition.title,
|
180
179
|
sources_count: definition.sources.size,
|
181
|
-
unclassified_sources_count: definition.sources.reject { @metadata.source(_1.source_name).
|
180
|
+
unclassified_sources_count: definition.sources.reject { @metadata.source(_1.source_name).module? }.size,
|
182
181
|
}
|
183
182
|
end,
|
184
183
|
pagination: pagination.to_h
|
@@ -200,39 +199,13 @@ module DiverDown
|
|
200
199
|
)
|
201
200
|
end
|
202
201
|
|
203
|
-
# GET /api/module_definition/:module_names.json
|
204
|
-
#
|
205
|
-
# @param bit_id [Integer]
|
206
|
-
# @param compound [Boolean]
|
207
|
-
# @param concentrate [Boolean]
|
208
|
-
# @param only_module [Boolean]
|
209
|
-
# @param modules [Array<String>]
|
210
|
-
def module_definition(compound, concentrate, only_module, modules)
|
211
|
-
definition = @store.combined_definition
|
212
|
-
|
213
|
-
# Filter all sources and dependencies by modules if match_modules is given
|
214
|
-
resolved_definition = DiverDown::Web::ModuleSourcesFilter.new(@metadata).filter(definition, modules:)
|
215
|
-
|
216
|
-
# Resolve source aliases
|
217
|
-
resolved_definition = @source_alias_resolver.resolve(resolved_definition)
|
218
|
-
|
219
|
-
render_combined_definition(
|
220
|
-
(1..@store.size).to_a,
|
221
|
-
resolved_definition,
|
222
|
-
modules,
|
223
|
-
compound:,
|
224
|
-
concentrate:,
|
225
|
-
only_module:
|
226
|
-
)
|
227
|
-
end
|
228
|
-
|
229
202
|
# GET /api/definitions/:bit_id.json
|
230
203
|
#
|
231
204
|
# @param bit_id [Integer]
|
232
205
|
# @param compound [Boolean]
|
233
206
|
# @param concentrate [Boolean]
|
234
207
|
# @param only_module [Boolean]
|
235
|
-
def combine_definitions(bit_id, compound, concentrate, only_module)
|
208
|
+
def combine_definitions(bit_id, compound, concentrate, only_module, remove_internal_sources, focus_modules, modules)
|
236
209
|
ids = DiverDown::Web::BitId.bit_id_to_ids(bit_id)
|
237
210
|
|
238
211
|
valid_ids = ids.select do
|
@@ -254,6 +227,8 @@ module DiverDown
|
|
254
227
|
if definition
|
255
228
|
# Resolve source aliases
|
256
229
|
resolved_definition = @source_alias_resolver.resolve(definition)
|
230
|
+
# Filter sources and dependencies by condition
|
231
|
+
resolved_definition = DiverDown::Web::DefinitionFilter.new(@metadata, focus_modules:, modules:, remove_internal_sources:).filter(resolved_definition)
|
257
232
|
|
258
233
|
render_combined_definition(
|
259
234
|
valid_ids,
|
@@ -304,20 +279,18 @@ module DiverDown
|
|
304
279
|
|
305
280
|
return not_found if related_definitions.empty?
|
306
281
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
282
|
+
modulee = if found_sources.empty?
|
283
|
+
nil
|
284
|
+
else
|
285
|
+
source = DiverDown::Definition::Source.combine(*found_sources)
|
286
|
+
@metadata.source(source.source_name).module
|
287
|
+
end
|
313
288
|
|
314
289
|
json(
|
315
290
|
source_name:,
|
316
291
|
resolved_alias: @metadata.source_alias.resolve_alias(source_name),
|
317
292
|
memo: @metadata.source(source_name).memo,
|
318
|
-
|
319
|
-
{ module_name: _1 }
|
320
|
-
end,
|
293
|
+
module: modulee,
|
321
294
|
related_definitions: related_definitions.map do |id, definition|
|
322
295
|
{
|
323
296
|
id:,
|
@@ -327,6 +300,7 @@ module DiverDown
|
|
327
300
|
reverse_dependencies: reverse_dependencies.values.map { |reverse_dependency|
|
328
301
|
{
|
329
302
|
source_name: reverse_dependency.source_name,
|
303
|
+
module: @metadata.source(reverse_dependency.source_name).module,
|
330
304
|
method_ids: reverse_dependency.method_ids.sort.map do |method_id|
|
331
305
|
{
|
332
306
|
context: method_id.context,
|
@@ -339,11 +313,11 @@ module DiverDown
|
|
339
313
|
)
|
340
314
|
end
|
341
315
|
|
342
|
-
# POST /api/sources/:source_name/
|
316
|
+
# POST /api/sources/:source_name/module.json
|
343
317
|
#
|
344
318
|
# @param source_name [String]
|
345
|
-
# @param
|
346
|
-
def
|
319
|
+
# @param module [Array<String>]
|
320
|
+
def set_module(source_name, modulee)
|
347
321
|
found_source = @store.any? do |_, definition|
|
348
322
|
definition.sources.any? do |source|
|
349
323
|
source.source_name == source_name
|
@@ -351,7 +325,7 @@ module DiverDown
|
|
351
325
|
end
|
352
326
|
|
353
327
|
if found_source
|
354
|
-
@metadata.source(source_name).
|
328
|
+
@metadata.source(source_name).module = modulee
|
355
329
|
@metadata.flush
|
356
330
|
|
357
331
|
json({})
|
@@ -388,8 +362,6 @@ module DiverDown
|
|
388
362
|
|
389
363
|
private
|
390
364
|
|
391
|
-
attr_reader :request, :store
|
392
|
-
|
393
365
|
def build_method_id_key(dependency, method_id)
|
394
366
|
"#{dependency.source_name}-#{method_id.context}-#{method_id.name}"
|
395
367
|
end
|
@@ -451,13 +423,28 @@ module DiverDown
|
|
451
423
|
source_name: _1.source_name,
|
452
424
|
resolved_alias: @metadata.source_alias.resolve_alias(_1.source_name),
|
453
425
|
memo: @metadata.source(_1.source_name).memo,
|
454
|
-
|
455
|
-
|
426
|
+
module: @metadata.source(_1.source_name).module,
|
427
|
+
dependencies: _1.dependencies.map do |dependency|
|
428
|
+
{
|
429
|
+
source_name: dependency.source_name,
|
430
|
+
}
|
456
431
|
end,
|
457
432
|
}
|
458
433
|
end
|
459
434
|
)
|
460
435
|
end
|
436
|
+
|
437
|
+
def fetch_module_dependency_map
|
438
|
+
M.synchronize do
|
439
|
+
if @module_dependency_map_cache_id != @store.combined_definition.object_id
|
440
|
+
definition = @store.combined_definition
|
441
|
+
@module_dependency_map = DiverDown::Web::DefinitionModuleDependencies.new(@metadata, definition).build_module_dependency_map
|
442
|
+
@module_dependency_map_cache_id = definition.object_id
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
@module_dependency_map
|
447
|
+
end
|
461
448
|
end
|
462
449
|
end
|
463
450
|
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DiverDown
|
4
|
+
class Web
|
5
|
+
class DefinitionFilter
|
6
|
+
# @param metadata_alias [DiverDown::Web::Metadata]
|
7
|
+
# @param focus_modules [Array<String>]
|
8
|
+
# @param modules [Array<String>]
|
9
|
+
# @param remove_internal_sources [Boolean]
|
10
|
+
def initialize(metadata, focus_modules: [], modules: [], remove_internal_sources: false)
|
11
|
+
@metadata = metadata
|
12
|
+
@focus_modules = focus_modules
|
13
|
+
@modules = modules | focus_modules
|
14
|
+
@remove_internal_sources = remove_internal_sources
|
15
|
+
end
|
16
|
+
|
17
|
+
# @param definition [DiverDown::Definition]
|
18
|
+
# @return [DiverDown::Definition]
|
19
|
+
def filter(definition)
|
20
|
+
return definition if !@remove_internal_sources && @modules.empty?
|
21
|
+
|
22
|
+
new_definition = DiverDown::Definition.new(
|
23
|
+
definition_group: definition.definition_group,
|
24
|
+
title: definition.title
|
25
|
+
)
|
26
|
+
|
27
|
+
source_names = extract_match_source_names(definition.sources)
|
28
|
+
|
29
|
+
definition.sources.each do |source|
|
30
|
+
next unless source_names.include?(source.source_name)
|
31
|
+
|
32
|
+
new_source = new_definition.find_or_build_source(source.source_name)
|
33
|
+
|
34
|
+
source.dependencies.each do |dependency|
|
35
|
+
next unless source_names.include?(dependency.source_name)
|
36
|
+
next unless focus_module?(source, dependency)
|
37
|
+
next if @remove_internal_sources && @metadata.source(source.source_name).module == @metadata.source(dependency.source_name).module
|
38
|
+
|
39
|
+
new_dependency = new_source.find_or_build_dependency(dependency.source_name)
|
40
|
+
|
41
|
+
next unless new_dependency
|
42
|
+
|
43
|
+
dependency.method_ids.each do |method_id|
|
44
|
+
new_method_id = new_dependency.find_or_build_method_id(
|
45
|
+
context: method_id.context,
|
46
|
+
name: method_id.name
|
47
|
+
)
|
48
|
+
|
49
|
+
method_id.paths.each do |path|
|
50
|
+
new_method_id.add_path(path)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
new_definition
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def focus_module?(source, dependency)
|
62
|
+
return true if @focus_modules.empty?
|
63
|
+
return true if @focus_modules.include?(@metadata.source(source.source_name).module)
|
64
|
+
return true if @focus_modules.include?(@metadata.source(dependency.source_name).module)
|
65
|
+
|
66
|
+
false
|
67
|
+
end
|
68
|
+
|
69
|
+
def extract_match_source_names(sources)
|
70
|
+
# Filter sources by modules.
|
71
|
+
source_names = sources.filter_map do |source|
|
72
|
+
source.source_name if match_module?(source.source_name)
|
73
|
+
end.to_set
|
74
|
+
|
75
|
+
if @remove_internal_sources
|
76
|
+
# Remove internal sources.
|
77
|
+
external_called_sources = Set.new
|
78
|
+
|
79
|
+
sources.each do |source|
|
80
|
+
next unless source_names.include?(source.source_name)
|
81
|
+
|
82
|
+
source_module = @metadata.source(source.source_name).module
|
83
|
+
|
84
|
+
source.dependencies.each do |dependency|
|
85
|
+
next unless source_names.include?(dependency.source_name)
|
86
|
+
|
87
|
+
dependency_module = @metadata.source(dependency.source_name).module
|
88
|
+
|
89
|
+
next if source_module == dependency_module
|
90
|
+
|
91
|
+
external_called_sources << source.source_name
|
92
|
+
external_called_sources << dependency.source_name
|
93
|
+
break
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
external_called_sources
|
98
|
+
else
|
99
|
+
source_names
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def top_module(source_name)
|
104
|
+
@metadata.source(source_name).modules.first
|
105
|
+
end
|
106
|
+
|
107
|
+
def match_module?(source_name)
|
108
|
+
@modules.empty? || @modules.include?(@metadata.source(source_name).module)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DiverDown
|
4
|
+
class Web
|
5
|
+
class DefinitionModuleDependencies
|
6
|
+
class ModuleDependency
|
7
|
+
attr_accessor :module
|
8
|
+
attr_reader :module_dependencies, :module_reverse_dependencies, :source_map, :source_reverse_dependency_map
|
9
|
+
|
10
|
+
def initialize(modulee)
|
11
|
+
@module = modulee
|
12
|
+
@module_dependencies = Set.new
|
13
|
+
@module_reverse_dependencies = Set.new
|
14
|
+
@source_map = {}
|
15
|
+
@source_reverse_dependency_map = {}
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Array<Source>]
|
19
|
+
def sources
|
20
|
+
@source_map.keys.sort.map { @source_map.fetch(_1) }
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Array<Source>]
|
24
|
+
def source_reverse_dependencies
|
25
|
+
@source_reverse_dependency_map.keys.sort.map { @source_reverse_dependency_map.fetch(_1) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(metadata, definition)
|
30
|
+
@metadata = metadata
|
31
|
+
@definition = definition
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [Hash{ String => Hash{ String => Array<DiverDown::Definition::Source> } }]
|
35
|
+
def build_module_dependency_map
|
36
|
+
module_dependency_map = Hash.new { |h, k| h[k] = ModuleDependency.new(k) }
|
37
|
+
|
38
|
+
@definition.sources.each do |source|
|
39
|
+
source_module = @metadata.source(source.source_name).module
|
40
|
+
next if source_module.nil?
|
41
|
+
|
42
|
+
source_module_dependency = module_dependency_map[source_module]
|
43
|
+
source_module_dependency.source_map[source.source_name] ||= DiverDown::Definition::Source.new(source_name: source.source_name)
|
44
|
+
|
45
|
+
source.dependencies.each do |dependency|
|
46
|
+
dependency_module = @metadata.source(dependency.source_name).module
|
47
|
+
|
48
|
+
next if source_module == dependency_module
|
49
|
+
next if dependency_module.nil?
|
50
|
+
|
51
|
+
dependency_module_dependency = module_dependency_map[dependency_module]
|
52
|
+
|
53
|
+
# Add module dependencies
|
54
|
+
source_module_dependency.module_dependencies.add(dependency_module)
|
55
|
+
|
56
|
+
# Add module reverse dependencies
|
57
|
+
dependency_module_dependency.module_reverse_dependencies.add(source_module)
|
58
|
+
|
59
|
+
# Add source
|
60
|
+
definition_source = source_module_dependency.source_map[source.source_name]
|
61
|
+
definition_dependency = definition_source.find_or_build_dependency(dependency.source_name)
|
62
|
+
dependency.method_ids.each do |method_id|
|
63
|
+
definition_dependency.find_or_build_method_id(name: method_id.name, context: method_id.context).add_path(*method_id.paths)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Add source reverse dependencies
|
67
|
+
definition_source = dependency_module_dependency.source_reverse_dependency_map[dependency.source_name] ||= DiverDown::Definition::Source.new(source_name: dependency.source_name)
|
68
|
+
definition_dependency = definition_source.find_or_build_dependency(source.source_name)
|
69
|
+
dependency.method_ids.each do |method_id|
|
70
|
+
definition_dependency.find_or_build_method_id(name: method_id.name, context: method_id.context).add_path(*method_id.paths)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
module_dependency_map
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|