Skip to content

Commit a72ae9c

Browse files
committed
Rust: refactor ast-generator to have all customization at the start
1 parent d0c7550 commit a72ae9c

File tree

2 files changed

+186
-162
lines changed

2 files changed

+186
-162
lines changed

rust/ast-generator/src/field_info.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#[derive(Eq, PartialEq)]
2+
pub enum FieldType {
3+
String,
4+
Predicate,
5+
Optional(String),
6+
Body(String),
7+
List(String),
8+
}
9+
10+
pub struct FieldInfo {
11+
pub name: String,
12+
pub ty: FieldType,
13+
}
14+
15+
impl FieldInfo {
16+
pub fn optional(name: &str, ty: &str) -> FieldInfo {
17+
FieldInfo {
18+
name: name.to_string(),
19+
ty: FieldType::Optional(ty.to_string()),
20+
}
21+
}
22+
23+
pub fn body(name: &str, ty: &str) -> FieldInfo {
24+
FieldInfo {
25+
name: name.to_string(),
26+
ty: FieldType::Body(ty.to_string()),
27+
}
28+
}
29+
30+
pub fn string(name: &str) -> FieldInfo {
31+
FieldInfo {
32+
name: name.to_string(),
33+
ty: FieldType::String,
34+
}
35+
}
36+
37+
pub fn predicate(name: &str) -> FieldInfo {
38+
FieldInfo {
39+
name: name.to_string(),
40+
ty: FieldType::Predicate,
41+
}
42+
}
43+
44+
pub fn list(name: &str, ty: &str) -> FieldInfo {
45+
FieldInfo {
46+
name: name.to_string(),
47+
ty: FieldType::List(ty.to_string()),
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)