Skip to content

Commit 9dc0aec

Browse files
committed
Refactor Parser::Ruby#call_node_name_arguments
Arguably, these methods belong more to the visitor than the "scanner". Since they simply process prism nodes without any ivar references, they should probably be converted into module functions on a utility module.
1 parent 197d7fd commit 9dc0aec

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

‎lib/rdoc/parser/ruby.rb‎

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -388,15 +388,23 @@ def handle_modifier_directive(code_object, line_no) # :nodoc:
388388
end
389389

390390
def call_node_name_arguments(call_node) # :nodoc:
391-
return [] unless call_node.arguments
392-
call_node.arguments.arguments.map do |arg|
393-
case arg
394-
when Prism::SymbolNode
395-
arg.value
396-
when Prism::StringNode
397-
arg.unescaped
398-
end
399-
end || []
391+
return unless arguments_node = call_node.arguments
392+
names = arguments_node.arguments.filter_map { |arg| argument_name(arg) }
393+
names unless names.empty?
394+
end
395+
396+
def call_node_name_argument(call_node) # :nodoc:
397+
return unless call_node.arguments
398+
argument_name(call_node.arguments.arguments.first)
399+
end
400+
401+
def argument_name(argument_node) # :nodoc:
402+
case argument_node
403+
when Prism::SymbolNode
404+
argument_node.value
405+
when Prism::StringNode
406+
argument_node.unescaped
407+
end
400408
end
401409

402410
# Handles meta method comments
@@ -412,7 +420,7 @@ def handle_meta_method_comment(comment, directives, node)
412420
case directive
413421
when 'attr', 'attr_reader', 'attr_writer', 'attr_accessor'
414422
attributes = [param] if param
415-
attributes ||= call_node_name_arguments(node).compact if is_call_node
423+
attributes ||= call_node_name_arguments(node) if is_call_node
416424
rw = directive == 'attr_writer' ? 'W' : directive == 'attr_accessor' ? 'RW' : 'R'
417425
when 'method'
418426
method_name = param if param
@@ -438,7 +446,7 @@ def handle_meta_method_comment(comment, directives, node)
438446
mark_container_documentable(@container)
439447
end
440448
elsif line_no || node
441-
method_name ||= call_node_name_arguments(node).first if is_call_node
449+
method_name ||= call_node_name_argument(node) if is_call_node
442450
line_no = node.location.start_line if node
443451
internal_add_method(
444452
method_name,
@@ -1216,8 +1224,7 @@ def constant_arguments_names(call_node)
12161224
end
12171225

12181226
def call_node_name_arguments(call_node)
1219-
names = @scanner.call_node_name_arguments(call_node).compact
1220-
names unless names.empty?
1227+
@scanner.call_node_name_arguments(call_node)
12211228
end
12221229

12231230
def symbol_arguments(call_node)

0 commit comments

Comments
 (0)