trains 0.0.6 → 0.0.8

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: 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: []