diver_down 0.0.1.alpha17 → 0.0.1.alpha18

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
  SHA256:
3
- metadata.gz: 9a2f7ed8cc7afd42927d7456860430b3349c9a597925bfbf50a8510da47051dc
4
- data.tar.gz: 6f204f7954c88becbedf9a04983a4be8b195ac4ef45d2e7dc8ec50f5d80094de
3
+ metadata.gz: 8bf67c52d7bafe08d7dfd22e48f2fedcec23c2d5410da3968d6e697edeaeb68b
4
+ data.tar.gz: 7319431059c715b0d83cf7b577522d47115ff1fe7d77ac04faa543355468f024
5
5
  SHA512:
6
- metadata.gz: 7653069f6d81577ce96f4b4488d194e625562056f98dbf366b87700fa50eb1444ae0eea53ef6307c9879a326e0962c6bb1f654bdf1220d9983166422a092a0a0
7
- data.tar.gz: 6449971ce4909626c376a1f36efc233b3995f05f6d3bed73dab792791fc645be56e02425578b3bd3e7d29c66b1b4b702609af7de46ada16bcea6a262e27e0cc3
6
+ metadata.gz: 659ab2212ababae04182c7cdf23d56dfb79877aeab7ae4ff419c417f56602fc6c446bdf94ce338944abf28b6f01b720ba3cb595bb7006d9f6cf3479ceb785869
7
+ data.tar.gz: 71118322b5bb69d6014f72f545957bd401de06ef5f695fec7273a0465f34fce3cdfb699e4130d263c4fc1031475549f1b137f53ceeef894f2840212669308401
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DiverDown
4
- VERSION = '0.0.1.alpha17'
4
+ VERSION = '0.0.1.alpha18'
5
5
  end
@@ -124,6 +124,7 @@ module DiverDown
124
124
  {
125
125
  source_name: dependency.source_name,
126
126
  module: @metadata.source(dependency.source_name).module,
127
+ dependency_type: @metadata.source(source.source_name).dependency_type(dependency.source_name),
127
128
  method_ids: dependency.method_ids.sort.map do |method_id|
128
129
  {
129
130
  context: method_id.context,
@@ -144,13 +145,7 @@ module DiverDown
144
145
  {
145
146
  source_name: dependency.source_name,
146
147
  module: @metadata.source(dependency.source_name).module,
147
- method_ids: dependency.method_ids.sort.map do |method_id|
148
- {
149
- context: method_id.context,
150
- name: method_id.name,
151
- paths: method_id.paths.sort,
152
- }
153
- end,
148
+ dependency_type: @metadata.source(source.source_name).dependency_type(dependency.source_name),
154
149
  }
155
150
  end,
156
151
  }
@@ -191,6 +186,44 @@ module DiverDown
191
186
  )
192
187
  end
193
188
 
189
+ # POST /api/modules/:from_module/dependency_types/:to_module.json
190
+ def update_module_dependency_type(from_module, to_module, dependency_type)
191
+ module_dependency_map = fetch_module_dependency_map
192
+
193
+ unless module_dependency_map.key?(from_module) && module_dependency_map.key?(to_module)
194
+ return not_found
195
+ end
196
+
197
+ module_dependency = module_dependency_map.fetch(from_module)
198
+ module_dependency.sources.each do |source|
199
+ source_metadata = @metadata.source(source.source_name)
200
+
201
+ source.dependencies.each do |dependency|
202
+ next unless @metadata.source(dependency.source_name).module == to_module
203
+
204
+ source_metadata.update_dependency_type(dependency.source_name, dependency_type)
205
+ end
206
+ end
207
+
208
+ @metadata.flush
209
+
210
+ json({})
211
+ end
212
+
213
+ # POST /api/sources/:from_source_name/dependency_types/:to_source_name.json
214
+ def update_source_dependency_type(from_source_name, to_source_name, dependency_type)
215
+ source = @metadata.source(from_source_name)
216
+
217
+ begin
218
+ source.update_dependency_type(to_source_name, dependency_type)
219
+ rescue ArgumentError => e
220
+ return json_error(e.message)
221
+ end
222
+
223
+ @metadata.flush
224
+ json({})
225
+ end
226
+
194
227
  # GET /api/pid.json
195
228
  def pid
196
229
  json(
@@ -64,11 +64,9 @@ module DiverDown
64
64
  end
65
65
 
66
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
67
+ # NOTE: Reverse dependencies's method_ids are not added because they are difficult to understand and not used.
68
+ definition_source = dependency_module_dependency.source_reverse_dependency_map[source.source_name] ||= DiverDown::Definition::Source.new(source_name: source.source_name)
69
+ definition_source.find_or_build_dependency(dependency.source_name)
72
70
  end
73
71
  end
74
72
 
@@ -9,13 +9,16 @@ module DiverDown
9
9
  private_constant(:BLANK_MEMO)
10
10
  private_constant(:BLANK_RE)
11
11
 
12
- attr_reader :memo, :module
12
+ DEPENDENCY_TYPES = %w[valid invalid todo ignore].freeze
13
+
14
+ attr_reader :memo, :module, :dependency_types
13
15
 
14
16
  # @param source_name [String]
15
17
  # NOTE: `module` is a reserved keyword in Ruby
16
- def initialize(memo: BLANK_MEMO, modulee: nil)
18
+ def initialize(memo: BLANK_MEMO, modulee: nil, dependency_types: {})
17
19
  @memo = memo
18
20
  @module = modulee
21
+ @dependency_types = dependency_types
19
22
  end
20
23
 
21
24
  # @param memo [String]
@@ -34,6 +37,35 @@ module DiverDown
34
37
  end
35
38
  end
36
39
 
40
+ # @param to_source [String]
41
+ # @return [String, nil]
42
+ def dependency_type(to_source)
43
+ @dependency_types[to_source]
44
+ end
45
+
46
+ # @param dependency_types [Hash]
47
+ # @return [void]
48
+ def dependency_types=(dependency_types)
49
+ @dependency_types.clear
50
+
51
+ dependency_types.each do |to_source, dependency_type|
52
+ update_dependency_type(to_source, dependency_type)
53
+ end
54
+ end
55
+
56
+ # @param to_source [String]
57
+ # @param dependency_type [String]
58
+ # @return [void]
59
+ def update_dependency_type(to_source, dependency_type)
60
+ if dependency_type.to_s.empty?
61
+ @dependency_types.delete(to_source)
62
+ else
63
+ raise ArgumentError, "invalid dependency_type: #{dependency_type}" unless DEPENDENCY_TYPES.include?(dependency_type)
64
+
65
+ @dependency_types[to_source] = dependency_type
66
+ end
67
+ end
68
+
37
69
  # @return [Boolean]
38
70
  def module?
39
71
  !@module.nil?
@@ -45,15 +77,10 @@ module DiverDown
45
77
 
46
78
  hash[:memo] = memo unless memo == BLANK_MEMO
47
79
  hash[:module] = @module unless @module.nil?
80
+ hash[:dependency_types] = @dependency_types unless @dependency_types.empty?
48
81
 
49
82
  hash
50
83
  end
51
-
52
- private
53
-
54
- def by_source_name(source_name)
55
- @store[source_name] ||= {}
56
- end
57
84
  end
58
85
  end
59
86
  end
@@ -54,6 +54,7 @@ module DiverDown
54
54
  loaded[:sources]&.each do |source_name, source_hash|
55
55
  source(source_name).memo = source_hash[:memo] if source_hash[:memo]
56
56
  source(source_name).module = source_hash[:module] if source_hash[:module]
57
+ source(source_name).dependency_types = source_hash[:dependency_types] if source_hash[:dependency_types]
57
58
  end
58
59
 
59
60
  loaded[:source_alias]&.each do |alias_name, source_names|
@@ -88,6 +88,18 @@ module DiverDown
88
88
  source = Regexp.last_match[:source]
89
89
  memo = request.params['memo'] || ''
90
90
  @action.set_memo(source, memo)
91
+ in ['POST', %r{\A/api/modules/(?<from_module>[^/]+)/dependency_types/(?<to_module>[^/]+)\.json\z}]
92
+ from_module = CGI.unescape(Regexp.last_match[:from_module])
93
+ to_module = CGI.unescape(Regexp.last_match[:to_module])
94
+ dependency_type = request.params['dependency_type']
95
+
96
+ @action.update_module_dependency_type(from_module, to_module, dependency_type)
97
+ in ['POST', %r{\A/api/sources/(?<from_source>[^/]+)/dependency_types/(?<to_source>[^/]+)\.json\z}]
98
+ from_source = Regexp.last_match[:from_source]
99
+ to_source = Regexp.last_match[:to_source]
100
+ dependency_type = request.params['dependency_type']
101
+
102
+ @action.update_source_dependency_type(from_source, to_source, dependency_type)
91
103
  in ['GET', %r{\A/api/pid\.json\z}]
92
104
  @action.pid
93
105
  in ['GET', %r{\A/api/initialization_status\.json\z}]