Skip to content

Commit 6c8e741

Browse files
committed
Extract to functions
1 parent 17e9339 commit 6c8e741

File tree

1 file changed

+52
-30
lines changed

1 file changed

+52
-30
lines changed

_tools/ruby_h_to_go/lib/ruby_h_to_go/argument_definition.rb

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,7 @@ def generate_go_arguments(char_var_count:, chars_var_count:)
6868
when :ref
6969
case type
7070
when "char"
71-
# self is string
72-
if char_var_count >= 2
73-
chars_var_name = "char#{snake_to_camel(go_name)}"
74-
clean_var_name = "cleanChar#{go_name}"
75-
else
76-
chars_var_name = "char"
77-
clean_var_name = "clean"
78-
end
79-
80-
before_call_function_lines = [
81-
"#{chars_var_name}, #{clean_var_name} := string2Char(#{go_name})",
82-
"defer #{clean_var_name}()",
83-
"",
84-
]
85-
86-
return chars_var_name, before_call_function_lines, []
71+
return generate_go_arguments_for_char_pointer(char_var_count)
8772

8873
when "void"
8974
# c_arg is pointer
@@ -102,25 +87,62 @@ def generate_go_arguments(char_var_count:, chars_var_count:)
10287
return "toCFunctionPointer(#{go_name})", [], []
10388

10489
when :str_array
105-
if chars_var_count >= 2
106-
chars_var_name = "chars#{snake_to_camel(go_name)}"
107-
clean_var_name = "cleanChars#{go_name}"
108-
else
109-
chars_var_name = "chars"
110-
clean_var_name = "cleanChars"
111-
end
90+
return generate_go_arguments_for_str_array(chars_var_count)
11291

113-
before_call_function_lines = [
114-
"#{chars_var_name}, #{clean_var_name} := strings2Chars(#{go_name})",
115-
"defer #{clean_var_name}()",
116-
"",
117-
]
92+
else
93+
return cast_to_cgo, [], []
94+
end
95+
end
11896

119-
return chars_var_name, before_call_function_lines, []
97+
private
12098

99+
# @param char_var_count [Integer]
100+
#
101+
# @return [Array<String, Array<String>, Array<String>>]
102+
# - casted_go_arg [String]
103+
# - before_call_function_lines [Array<String>]
104+
# - after_call_function_lines [Array<String>]
105+
def generate_go_arguments_for_char_pointer(char_var_count)
106+
# self is string
107+
if char_var_count >= 2
108+
chars_var_name = "char#{snake_to_camel(go_name)}"
109+
clean_var_name = "cleanChar#{go_name}"
121110
else
122-
return cast_to_cgo, [], []
111+
chars_var_name = "char"
112+
clean_var_name = "clean"
123113
end
114+
115+
before_call_function_lines = [
116+
"#{chars_var_name}, #{clean_var_name} := string2Char(#{go_name})",
117+
"defer #{clean_var_name}()",
118+
"",
119+
]
120+
121+
[chars_var_name, before_call_function_lines, []]
122+
end
123+
124+
# @param chars_var_count [Integer]
125+
#
126+
# @return [Array<String, Array<String>, Array<String>>]
127+
# - casted_go_arg [String]
128+
# - before_call_function_lines [Array<String>]
129+
# - after_call_function_lines [Array<String>]
130+
def generate_go_arguments_for_str_array(chars_var_count)
131+
if chars_var_count >= 2
132+
chars_var_name = "chars#{snake_to_camel(go_name)}"
133+
clean_var_name = "cleanChars#{go_name}"
134+
else
135+
chars_var_name = "chars"
136+
clean_var_name = "cleanChars"
137+
end
138+
139+
before_call_function_lines = [
140+
"#{chars_var_name}, #{clean_var_name} := strings2Chars(#{go_name})",
141+
"defer #{clean_var_name}()",
142+
"",
143+
]
144+
145+
[chars_var_name, before_call_function_lines, []]
124146
end
125147
end
126148
end

0 commit comments

Comments
 (0)