Skip to content

Commit 2768e6c

Browse files
committed
Handle NamespaceNode types (#64)
1 parent b76b845 commit 2768e6c

1 file changed

Lines changed: 26 additions & 9 deletions

File tree

rust/ruby-rbs/build.rs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ struct Config {
1010
struct NodeField {
1111
name: String,
1212
c_type: String,
13+
c_name: Option<String>,
14+
}
15+
16+
impl NodeField {
17+
fn c_name(&self) -> &str {
18+
let name = self.c_name.as_ref().unwrap_or(&self.name);
19+
if name == "type" { "type_" } else { name }
20+
}
1321
}
1422

1523
#[derive(Debug, Deserialize)]
@@ -108,7 +116,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
108116
writeln!(
109117
file,
110118
" RBSString::new(unsafe {{ &(*self.pointer).{} }})",
111-
field.name
119+
field.c_name()
112120
)?;
113121
writeln!(file, " }}")?;
114122
}
@@ -122,7 +130,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
122130
writeln!(
123131
file,
124132
" CommentNode {{ parser: self.parser, pointer: unsafe {{ (*self.pointer).{} }} }}",
125-
field.name
133+
field.c_name()
126134
)?;
127135
writeln!(file, " }}")?;
128136
}
@@ -135,7 +143,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
135143
writeln!(
136144
file,
137145
" ClassSuperNode {{ parser: self.parser, pointer: unsafe {{ (*self.pointer).{} }} }}",
138-
field.name
146+
field.c_name()
139147
)?;
140148
writeln!(file, " }}")?;
141149
}
@@ -144,7 +152,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
144152
writeln!(
145153
file,
146154
" RBSSymbol::new(unsafe {{ (*self.pointer).{} }}, self.parser)",
147-
field.name
155+
field.c_name()
148156
)?;
149157
writeln!(file, " }}")?;
150158
}
@@ -153,7 +161,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
153161
writeln!(
154162
file,
155163
" RBSLocation::new(unsafe {{ (*self.pointer).{} }}, self.parser)",
156-
field.name
164+
field.c_name()
157165
)?;
158166
writeln!(file, " }}")?;
159167
}
@@ -166,7 +174,16 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
166174
writeln!(
167175
file,
168176
" RBSLocationList::new(unsafe {{ (*self.pointer).{} }}, self.parser)",
169-
field.name
177+
field.c_name()
178+
)?;
179+
writeln!(file, " }}")?;
180+
}
181+
"rbs_namespace" => {
182+
writeln!(file, " pub fn {}(&self) -> NamespaceNode {{", field.name)?;
183+
writeln!(
184+
file,
185+
" NamespaceNode {{ parser: self.parser, pointer: unsafe {{ (*self.pointer).{} }} }}",
186+
field.c_name()
170187
)?;
171188
writeln!(file, " }}")?;
172189
}
@@ -181,7 +198,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
181198
writeln!(
182199
file,
183200
" unsafe {{ Node::new(self.parser, (*self.pointer).{}) }}",
184-
name
201+
field.c_name()
185202
)?;
186203
writeln!(file, " }}")?;
187204
}
@@ -190,7 +207,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
190207
writeln!(
191208
file,
192209
" NodeList::new(self.parser, unsafe {{ (*self.pointer).{} }})",
193-
field.name
210+
field.c_name()
194211
)?;
195212
writeln!(file, " }}")?;
196213
}
@@ -199,7 +216,7 @@ fn generate(config: &Config) -> Result<(), Box<dyn Error>> {
199216
writeln!(
200217
file,
201218
" RBSKeyword::new(self.parser, unsafe {{ (*self.pointer).{} }})",
202-
field.name
219+
field.c_name()
203220
)?;
204221
writeln!(file, " }}")?;
205222
}

0 commit comments

Comments
 (0)