bullet_train-super_scaffolding 1.6.19 → 1.6.20

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eafd70da2079b3901c1d863670e76da7058d10eec9aa25158b7b60bfb6599b98
4
- data.tar.gz: 5ee1b5f7fcadae48a99923d5228408cee0d80ce69990907e5882ba234e71505d
3
+ metadata.gz: 753c1abfff3d8c420ad980d7b7346429225267918becdd9c5a91682dffc8247d
4
+ data.tar.gz: 157b9e1c7747cd41d59611043ad339ab0d42ef485f1b16882648a803cec2b0df
5
5
  SHA512:
6
- metadata.gz: e38a7f78a0e925e3cc7250a8f16ae583315902347f61d9ea2c36d8db88634e60b500f3702c2c2ce5ae23f6df5d3c20c56fd7e1c15f4ec6b33f1eda4a15503892
7
- data.tar.gz: 5cb14fe691394c3656e29e604f09ba1f2e80a7de36efdb717abdf01fb5dee610628feb54b73d4f8d2a18aecfde3f095c8c68e44dd4290a6913acfc54f9abe275
6
+ metadata.gz: 5f3f9710da57086521693f17a5e9d2c5cf8f1fa55f1c2fd3b7e848c26a80ba52ed3b36d6a26ad2b0ae900efc6712896daf34a41854660917bc8140c48ef3cb99
7
+ data.tar.gz: c4e500fdb776490d8698863551aeeb6b23e0127dcda35e79bcc21bc28bc7f696502296d45ba3925e46a1bef6618385114c051703550e28e24011fd8c3655833b
@@ -1,5 +1,5 @@
1
1
  module BulletTrain
2
2
  module SuperScaffolding
3
- VERSION = "1.6.19"
3
+ VERSION = "1.6.20"
4
4
  end
5
5
  end
@@ -54,17 +54,23 @@ class Scaffolding::RoutesFileManipulator
54
54
  def find_namespaces(namespaces, within = nil)
55
55
  namespaces = namespaces.dup
56
56
  results = {}
57
- block_end = Scaffolding::BlockManipulator.find_block_end(starting_from: within, lines: lines) if within
58
- lines.each_with_index do |line, line_number|
59
- if within
60
- next unless line_number > within
61
- return results if line_number >= block_end
62
- end
63
- if line.include?("namespace :#{namespaces.first} do")
64
- results[namespaces.shift] = line_number
65
- end
66
- return results unless namespaces.any?
57
+ reinstantiate_masamune_object
58
+
59
+ # `within` can refer to either a `resources`, `namespace`, `scope`, or `shallow` block.
60
+ blocks = @msmn.method_calls.select { |node| node.token_value.match?(/resources|namespace|scope|shallow/) }
61
+ namespace_nodes = blocks.select { |node| node.token_value.match?(/namespace/) }
62
+
63
+ if within
64
+ starting_block = blocks.find { |block| block.line_number - 1 == within }
65
+ block_range = (starting_block.location.start_line)..(starting_block.location.end_line)
66
+ namespace_nodes.select! { |node| block_range.cover?(node.line_number) }
67
+ end
68
+
69
+ namespace_nodes.each do |node|
70
+ name = node.arguments.child_nodes.first.unescaped
71
+ results[namespaces.shift] = node.line_number - 1 if namespaces.first.to_s == name
67
72
  end
73
+
68
74
  results
69
75
  end
70
76
 
@@ -223,6 +229,7 @@ class Scaffolding::RoutesFileManipulator
223
229
  # all other namespace blocks INSIDE the top-level namespace blocks are skipped
224
230
  if namespace_line_numbers.include?(line_index)
225
231
  # Grab the first symbol token on the same line as the namespace.
232
+ reinstantiate_masamune_object
226
233
  namespace_name = @msmn.symbols.find { |sym| sym.line_number == line_index }.token_value
227
234
  local_namespace = find_namespaces([namespace_name], within)
228
235
  starting_line_number = local_namespace[namespace_name]
@@ -418,4 +425,8 @@ class Scaffolding::RoutesFileManipulator
418
425
  lines[line_number].gsub!(/resources :(.*)$/, "resources :\\1, concerns: [#{existing_concerns.map { |e| ":#{e}" }.join(", ")}]")
419
426
  end
420
427
  end
428
+
429
+ def reinstantiate_masamune_object
430
+ @msmn = Masamune::AbstractSyntaxTree.new(lines.join)
431
+ end
421
432
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-super_scaffolding
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.19
4
+ version: 1.6.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-22 00:00:00.000000000 Z
11
+ date: 2023-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard