Skip to content

Commit a9099f4

Browse files
committed
nits: Extract to generate_function_definition_from_line
1 parent 4338a8a commit a9099f4

File tree

1 file changed

+28
-19
lines changed
  • _tools/ruby_h_to_go/lib/ruby_header_parser

1 file changed

+28
-19
lines changed

_tools/ruby_h_to_go/lib/ruby_header_parser/parser.rb

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -104,33 +104,42 @@ def extract_enum_definitions
104104
def __extract_function_definitions(c_kinds:, kind:, is_parse_multiline_definition:)
105105
stdout = execute_ctags("--c-kinds=#{c_kinds} --fields=+nS --extras=+q")
106106

107-
stdout.each_line.with_object([]) do |line, definitions|
108-
parts = line.split("\t")
107+
stdout.each_line.map do |line|
108+
generate_function_definition_from_line(line:, kind:, is_parse_multiline_definition:)
109+
end.compact.uniq(&:name)
110+
end
111+
112+
# @param line [String]
113+
# @param kind [String]
114+
# @param is_parse_multiline_definition [Boolean]
115+
#
116+
# @param [Array<RubyHeaderParser::FunctionDefinition>, nil]
117+
def generate_function_definition_from_line(line:, kind:, is_parse_multiline_definition:)
118+
parts = line.split("\t")
109119

110-
function_name = parts[0]
111-
filepath = parts[1]
120+
function_name = parts[0]
121+
filepath = parts[1]
112122

113-
next unless data.should_generate_function?(function_name)
123+
return nil unless data.should_generate_function?(function_name)
114124

115-
next unless parts[3] == kind
125+
return nil unless parts[3] == kind
116126

117-
line_num = Util.find_field(parts, "line").to_i
118-
definition = parse_function_definition(filepath:, pattern: parts[2], line_num:, is_parse_multiline_definition:)
127+
line_num = Util.find_field(parts, "line").to_i
128+
definition = parse_function_definition(filepath:, pattern: parts[2], line_num:, is_parse_multiline_definition:)
119129

120-
args = parse_definition_args(function_name, Util.find_field(parts, "signature"))
130+
args = parse_definition_args(function_name, Util.find_field(parts, "signature"))
121131

122-
# Exclude functions with variable-length arguments
123-
next if args&.last&.type == "..."
132+
# Exclude functions with variable-length arguments
133+
return nil if args&.last&.type == "..."
124134

125-
typeref_field = Util.find_field(parts, "typeref:typename")
135+
typeref_field = Util.find_field(parts, "typeref:typename")
126136

127-
definitions << FunctionDefinition.new(
128-
definition:,
129-
name: function_name,
130-
typeref: create_typeref(definition:, function_name:, typeref_field:, filepath:, line_num:),
131-
args:,
132-
)
133-
end.uniq(&:name)
137+
FunctionDefinition.new(
138+
definition:,
139+
name: function_name,
140+
typeref: create_typeref(definition:, function_name:, typeref_field:, filepath:, line_num:),
141+
args:,
142+
)
134143
end
135144

136145
# @param args [String]

0 commit comments

Comments
 (0)