Skip to content

Commit c012720

Browse files
committed
add ClassDefinition#find_method_by_name
1 parent 50909ad commit c012720

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

lib/helpers/parse_ruby.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ def find_classes_by_ancestor(superclass)
161161
@modules.flat_map { |mod| mod.find_classes_by_ancestor(superclass) }
162162
end
163163

164+
def find_method_by_name(name)
165+
methods.find { |method_definition| method_definition.name == name }
166+
end
167+
164168
def full_name
165169
names = [name]
166170
this = self

spec/helpers/parse_ruby_spec.rb

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def user_type
9999
})
100100
end
101101

102-
it 'finds classes by full_name' do
102+
it 'finds class by full_name' do
103103
rewriter =
104104
Synvert::Rewriter.new 'test', 'ruby_parse_helper' do
105105
call_helper 'ruby/parse'
@@ -148,4 +148,28 @@ class UserJob < SynvertJob
148148
classes = definitions.find_classes_by_ancestor('ApplicationJob')
149149
expect(classes.map(&:full_name)).to eq(['SynvertJob', 'Synvert::UserJob'])
150150
end
151+
152+
it 'finds method by name' do
153+
rewriter =
154+
Synvert::Rewriter.new 'test', 'ruby_parse_helper' do
155+
call_helper 'ruby/parse'
156+
end
157+
158+
FileUtils.mkdir_p('app/models')
159+
File.write('app/models/user.rb', <<~EOF)
160+
class User < ApplicationRecord
161+
def activate
162+
end
163+
164+
def deactivate
165+
end
166+
end
167+
EOF
168+
169+
rewriter.process
170+
171+
definitions = rewriter.load_data(:ruby_definitions)
172+
class_definition = definitions.find_class_by_full_name('User')
173+
expect(class_definition.find_method_by_name('deactivate').name).to eq('deactivate')
174+
end
151175
end

0 commit comments

Comments
 (0)