fn write_library()

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(())
    }