trains 0.0.6 → 0.0.8

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: 2b1af8d7a53681c21f561432534383da1d83bf4615bc8e85bdfa6c8ce7b210aa
4
- data.tar.gz: aa4798c33b271c590c5b966078eb7a6f9fd603a069842ce454cadb14de8cc08d
3
+ metadata.gz: be756e07f687c79e259385beb680f5749c54a880273be056ba83a717aa821887
4
+ data.tar.gz: da3fc5403f7844919f9bfd3ac49ef37479e7f4149328e851d1b1e654353398af
5
5
  SHA512:
6
- metadata.gz: f6faddb254499e05f02a13def98dc7ab1f7df69d2ff694617cbd24410e2cb23266c7fd4c067cb2e4e2dd4fd7e7552f7d5ba79c995f2f951ff452150b8d800222
7
- data.tar.gz: 95748dab8e2f16aed324d9c55a8d14c0eeec265361d49794bf7d81f21f6b42b8a25ba7426f719fea673efc982864ff49c745d3cdeb6888780b63a3bdf81038b9
6
+ metadata.gz: 3a389ed84aedba71b13061c4233389d3008bd895a532f506a9f492a6d6aaa54ae96708d27f0e4cba9269f1666ef8f614c5ebf467a8bbf70c63595b449e2bcc0f
7
+ data.tar.gz: be28d384e28be094161bcdb28105a4bef9dd2d7f86978936f554bf699a205c1953a88bd1de071c1005f2ec4d5c54e91bf6ace9e20f7f917bc8204b46ced1a431
@@ -55,8 +55,8 @@ module Trains
55
55
 
56
56
  def get_routes
57
57
  route_file = [File.join(@dir, 'config', 'routes.rb')]
58
-
59
58
  routes_results = parse_util(route_file, Visitor::Route)
59
+
60
60
  routes_results
61
61
  .select { |result| result.error.nil? }
62
62
  .map(&:data)
@@ -1,3 +1,3 @@
1
1
  module Trains
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -1,10 +1,10 @@
1
- require "yaml"
1
+ require 'yaml'
2
2
 
3
3
  module Trains
4
4
  module Visitor
5
5
  # Visitor that parses DB migration and associates them with Rails models
6
6
  class Migration < Base
7
- def_node_matcher :send_node?, "(send nil? ...)"
7
+ def_node_matcher :send_node?, '(send nil? ...)'
8
8
  attr_reader :is_migration, :model
9
9
 
10
10
  def initialize
@@ -20,7 +20,7 @@ module Trains
20
20
  end
21
21
 
22
22
  def on_class(node)
23
- unless node.parent_class.source.include? "ActiveRecord::Migration"
23
+ unless node.parent_class.source.include? 'ActiveRecord::Migration'
24
24
  return
25
25
  end
26
26
 
@@ -63,49 +63,51 @@ module Trains
63
63
  add_column
64
64
  remove_column
65
65
  change_column
66
+ add_index
67
+ ]
68
+ column_modifiers = %i[
69
+ add_column
70
+ change_column
71
+ remove_column
66
72
  ]
67
- block_type_modifier = false
68
73
 
69
74
  method_name = node.method_name
70
75
  return unless allowed_method_names.include? method_name
71
76
  return if node.body.nil?
72
77
 
73
78
  table_modifier =
74
- if node.body.children[0] == nil
75
- block_type_modifier = false
76
- # if table modifier is a one-liner method call
79
+ # if table modifier is a one-liner method call
80
+ if node.body.children[0].nil?
77
81
  node.body.children[1]
78
82
  elsif node.body.children[0].block_type?
79
- block_type_modifier = true
80
83
  # if table modifier is in a block
81
84
  node.body.children[0].method_name
85
+ elsif node.body.children[0].send_type?
86
+ node.body.children[0].method_name
82
87
  end
83
88
  return unless allowed_table_modifiers.include? table_modifier
84
89
 
85
90
  @table_modifier = table_modifier
86
91
 
87
- # Get the name of the table being modified
88
- if block_type_modifier
89
- raw_table_name =
90
- node.body.children[0].children[0].children[2].value.to_s
91
- @table_name = raw_table_name.singularize.camelize
92
+ node.each_descendant(:send) do |send_node|
93
+ if allowed_table_modifiers.include?(send_node.method_name)
94
+ raw_table_name = send_node.arguments[0]
95
+ @table_name = raw_table_name.value.to_s.singularize.camelize
96
+ if column_modifiers.include?(send_node.method_name)
97
+ @fields.append(DTO::Field.new(send_node.arguments[1].value,
98
+ send_node.arguments[2]&.value))
99
+ end
92
100
 
93
- node.body.children[0].children[2].each_child_node do |child|
94
- process_migration_field(child)
101
+ next
95
102
  end
96
- else
97
- raw_table_name = node.body.children[2].value.to_s
98
- @table_name = raw_table_name.singularize.camelize
99
103
 
100
- field_name = node.body.children[3]&.value
101
- field_type = node.body.children[4]&.value
102
- @fields.append(DTO::Field.new(field_name, field_type))
104
+ next if allowed_table_modifiers.include?(send_node.method_name)
105
+
106
+ parse_migration_field(send_node)
103
107
  end
104
108
  end
105
109
 
106
- def process_migration_field(node)
107
- return unless node.send_type?
108
-
110
+ def parse_migration_field(node)
109
111
  if node.children[1] == :timestamps
110
112
  @fields.append(DTO::Field.new(:created_at, :datetime))
111
113
  @fields.append(DTO::Field.new(:updated_at, :datetime))
@@ -16,7 +16,7 @@ module Trains
16
16
  (send nil? %1 ...)
17
17
  PATTERN
18
18
 
19
- ALLOWED_VERBS = %i[get put post update delete resources scope].freeze
19
+ ALLOWED_VERBS = %i[get put post update delete resources].freeze
20
20
 
21
21
  def initialize
22
22
  @route_list = []
@@ -28,15 +28,15 @@ module Trains
28
28
 
29
29
  def on_block(node)
30
30
  return unless route_parent?(node)
31
- return if node.body.nil?
32
31
 
33
- node.body.each_child_node do |child|
32
+ node.each_descendant(:send) do |child|
34
33
  ALLOWED_VERBS.each do |verb|
35
34
  if route_method?(child, verb)
36
35
  @route_list << parse_route(child, verb)
37
36
  end
38
37
  end
39
38
  end
39
+
40
40
  end
41
41
 
42
42
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trains
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Syed Faraaz Ahmad
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-08 00:00:00.000000000 Z
11
+ date: 2023-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.5'
69
- description:
69
+ description:
70
70
  email:
71
71
  - faraaz98@live.com
72
72
  executables: []
@@ -114,7 +114,7 @@ metadata:
114
114
  source_code_uri: https://github.com/faraazahmad/trains
115
115
  changelog_uri: https://github.com/faraazahmad/trains/blob/master/CHANGELOG.md
116
116
  rubygems_mfa_required: 'true'
117
- post_install_message:
117
+ post_install_message:
118
118
  rdoc_options: []
119
119
  require_paths:
120
120
  - lib
@@ -129,8 +129,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  requirements: []
132
- rubygems_version: 3.2.3
133
- signing_key:
132
+ rubygems_version: 3.4.3
133
+ signing_key:
134
134
  specification_version: 4
135
135
  summary: Collect metadata about your Rails app by statically analyzing it
136
136
  test_files: []