in serde-generate/src/dart.rs [100:148]
fn write_library(
&self,
install_dir: &Path,
current_namespace: Vec<String>,
registry: &Registry,
) -> Result<()> {
let mut file =
std::fs::File::create(install_dir.join(self.config.module_name.clone() + ".dart"))?;
let mut emitter = DartEmitter {
out: IndentedWriter::new(&mut file, IndentConfig::Space(2)),
generator: self,
current_namespace,
registry,
};
writeln!(
&mut emitter.out,
r#"library {}_types;
import 'dart:typed_data';
import 'package:meta/meta.dart';
import 'package:tuple/tuple.dart';
import '../serde/serde.dart';"#,
self.config.module_name,
)?;
for encoding in &self.config.encodings {
writeln!(
&mut emitter.out,
"import '../{0}/{0}.dart';",
encoding.name()
)?;
}
if let Some(files) = &self.config.external_definitions.get("import") {
for file in *files {
writeln!(&mut emitter.out, "import '{0}';", file)?;
}
}
writeln!(&mut emitter.out, "\nexport '../serde/serde.dart';")?;
writeln!(&mut emitter.out, "\npart 'trait_helpers.dart';")?;
for name in registry.keys() {
writeln!(&mut emitter.out, "part '{}.dart';", name.to_snake_case())?;
}
Ok(())
}