1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use super::{fields, ns};
use crate::Options;
use lib_ruby_parser_nodes::Message;
pub fn name(message: &Message) -> String {
format!(
"{ns}__new_{variant}",
ns = ns(),
variant = message.lower_name()
)
}
fn arglist(message: &Message, options: &Options) -> String {
message
.fields
.map(|field| {
format!(
"{field_type} {field_name}_blob",
field_type = fields::field_type(field, options),
field_name = fields::field_name(field)
)
})
.join(", ")
}
pub fn sig(message: &Message, options: &Options) -> String {
format!(
"{diagnostic_message_blob} {fn_attributes} {constructor_name}({arglist})",
diagnostic_message_blob = options.diagnostic_message_blob_name,
fn_attributes = options.fn_attributes,
constructor_name = name(message),
arglist = arglist(message, options)
)
}