From c7a18dd4cc6a1d9ba681b517495266dcefe4ac2f Mon Sep 17 00:00:00 2001 From: Alain Emilia Anna Zscheile Date: Sat, 28 Sep 2024 00:07:35 +0200 Subject: [PATCH] specctra: some DSN files use 'PCB' instead of 'pcb' --- src/specctra/structure.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/specctra/structure.rs b/src/specctra/structure.rs index d0a6c36..258d286 100644 --- a/src/specctra/structure.rs +++ b/src/specctra/structure.rs @@ -44,11 +44,23 @@ pub struct NetOut { pub via: Vec, } -#[derive(ReadDsn, WriteSes, Debug)] +#[derive(WriteSes, Debug)] pub struct DsnFile { pub pcb: Pcb, } +impl ReadDsn for DsnFile { + fn read_dsn(tokenizer: &mut ListTokenizer) -> Result { + let mut pcb_type_name = tokenizer.consume_token()?.expect_any_start()?; + if !pcb_type_name.eq_ignore_ascii_case("pcb") { + return Err(ParseError::ExpectedStartOfList("pcb")); + } + let pcb = tokenizer.read_value::()?; + tokenizer.consume_token()?.expect_end()?; + Ok(Self { pcb }) + } +} + #[derive(ReadDsn, WriteSes, Debug)] pub struct Pcb { #[anon]