Skip to content

Commit 6d489cb

Browse files
committed
Filter out special reducers in generate cli
This updates filtering of `__init__` to exclude all special reducers, as well as moves the filtering to centralised place before calling language-specific generate command.
1 parent 8b2ff54 commit 6d489cb

File tree

3 files changed

+19
-34
lines changed

3 files changed

+19
-34
lines changed

crates/cli/src/subcommands/generate/csharp.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,16 +1471,13 @@ pub fn autogen_csharp_reducer(ctx: &GenCtx, reducer: &ReducerDef, namespace: &st
14711471
pub fn autogen_csharp_globals(items: &[GenItem], namespace: &str) -> Vec<Vec<(String, String)>> {
14721472
let reducers: Vec<&ReducerDef> = items
14731473
.iter()
1474-
.map(|i| {
1474+
.filter_map(|i| {
14751475
if let GenItem::Reducer(reducer) = i {
14761476
Some(reducer)
14771477
} else {
14781478
None
14791479
}
14801480
})
1481-
.filter(|r| r.is_some())
1482-
.flatten()
1483-
.filter(|r| r.name != "__init__")
14841481
.collect();
14851482
let reducer_names: Vec<String> = reducers
14861483
.iter()

crates/cli/src/subcommands/generate/mod.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,10 @@ pub fn extract_from_moduledef(module: ModuleDef) -> (GenCtx, impl Iterator<Item
195195
let iter = itertools::chain!(
196196
misc_exports.into_iter().map(GenItem::from_misc_export),
197197
tables.into_iter().map(GenItem::Table),
198-
reducers.into_iter().map(GenItem::Reducer),
198+
reducers
199+
.into_iter()
200+
.filter(|r| !(r.name.starts_with("__") && r.name.ends_with("__")))
201+
.map(GenItem::Reducer),
199202
);
200203
(ctx, iter)
201204
}
@@ -236,7 +239,6 @@ impl GenItem {
236239
};
237240
Some((rust::rust_type_file_name(name), code))
238241
}
239-
GenItem::Reducer(reducer) if reducer.name == "__init__" => None,
240242
GenItem::Reducer(reducer) => {
241243
let code = rust::autogen_rust_reducer(ctx, reducer);
242244
Some((rust::rust_reducer_file_name(&reducer.name), code))
@@ -265,8 +267,6 @@ impl GenItem {
265267
AlgebraicType::Builtin(_) => todo!(),
266268
AlgebraicType::Ref(_) => todo!(),
267269
},
268-
// I'm not sure exactly how this should work; when does init_database get called with csharp?
269-
GenItem::Reducer(reducer) if reducer.name == "__init__" => None,
270270
GenItem::Reducer(reducer) => {
271271
let code = python::autogen_python_reducer(ctx, reducer);
272272
let name = reducer.name.to_case(Case::Snake);
@@ -296,8 +296,6 @@ impl GenItem {
296296
AlgebraicType::Builtin(_) => todo!(),
297297
AlgebraicType::Ref(_) => todo!(),
298298
},
299-
// I'm not sure exactly how this should work; when does init_database get called with csharp?
300-
GenItem::Reducer(reducer) if reducer.name == "__init__" => None,
301299
GenItem::Reducer(reducer) => {
302300
let code = typescript::autogen_typescript_reducer(ctx, reducer);
303301
let name = reducer.name.to_case(Case::Snake);
@@ -325,8 +323,6 @@ impl GenItem {
325323
AlgebraicType::Builtin(_) => todo!(),
326324
AlgebraicType::Ref(_) => todo!(),
327325
},
328-
// I'm not sure exactly how this should work; when does init_database get called with csharp?
329-
GenItem::Reducer(reducer) if reducer.name == "__init__" => None,
330326
GenItem::Reducer(reducer) => {
331327
let code = csharp::autogen_csharp_reducer(ctx, reducer, namespace);
332328
let pascalcase = reducer.name.to_case(Case::Pascal);

crates/cli/src/subcommands/generate/rust.rs

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -819,13 +819,9 @@ fn print_dispatch_imports(out: &mut Indenter) {
819819
print_lines(out, DISPATCH_IMPORTS);
820820
}
821821

822-
fn is_init(reducer: &ReducerDef) -> bool {
823-
reducer.name == "__init__"
824-
}
825-
826822
fn iter_reducer_items(items: &[GenItem]) -> impl Iterator<Item = &ReducerDef> {
827823
items.iter().filter_map(|item| match item {
828-
GenItem::Reducer(reducer) if !is_init(reducer) => Some(reducer),
824+
GenItem::Reducer(reducer) => Some(reducer),
829825
_ => None,
830826
})
831827
}
@@ -838,10 +834,10 @@ fn iter_table_items(items: &[GenItem]) -> impl Iterator<Item = &TableDef> {
838834
}
839835

840836
fn iter_module_names(items: &[GenItem]) -> impl Iterator<Item = String> + '_ {
841-
items.iter().filter_map(|item| match item {
842-
GenItem::Table(table) => Some(table.name.to_case(Case::Snake)),
843-
GenItem::TypeAlias(ty) => Some(ty.name.to_case(Case::Snake)),
844-
GenItem::Reducer(reducer) => (!is_init(reducer)).then_some(reducer_module_name(reducer)),
837+
items.iter().map(|item| match item {
838+
GenItem::Table(table) => table.name.to_case(Case::Snake),
839+
GenItem::TypeAlias(ty) => ty.name.to_case(Case::Snake),
840+
GenItem::Reducer(reducer) => reducer_module_name(reducer),
845841
})
846842
}
847843

@@ -1067,19 +1063,15 @@ fn print_reducer_event_defn(out: &mut Indenter, items: &[GenItem]) {
10671063
out.delimited_block(
10681064
"pub enum ReducerEvent {",
10691065
|out| {
1070-
for item in items {
1071-
if let GenItem::Reducer(reducer) = item {
1072-
if !is_init(reducer) {
1073-
writeln!(
1074-
out,
1075-
"{}({}::{}),",
1076-
reducer_variant_name(reducer),
1077-
reducer_module_name(reducer),
1078-
reducer_type_name(reducer),
1079-
)
1080-
.unwrap();
1081-
}
1082-
}
1066+
for reducer in iter_reducer_items(items) {
1067+
writeln!(
1068+
out,
1069+
"{}({}::{}),",
1070+
reducer_variant_name(reducer),
1071+
reducer_module_name(reducer),
1072+
reducer_type_name(reducer),
1073+
)
1074+
.unwrap();
10831075
}
10841076
},
10851077
"}\n",

0 commit comments

Comments
 (0)