diff options
author | Lars Wirzenius <liw@liw.fi> | 2023-05-14 07:46:35 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2023-05-14 07:56:15 +0300 |
commit | 113ed1a871fddae8ccf942c19fe6737106fb3e84 (patch) | |
tree | e44c6b885dc03e3f3ff9a16cf75d63e84caee256 /src/doc.rs | |
parent | 5b30f07a5989769397de7441ac9440e379a53488 (diff) | |
download | subplot-113ed1a871fddae8ccf942c19fe6737106fb3e84.tar.gz |
feat: check for duplicate scenario titles
Sponsored-by: author
Diffstat (limited to 'src/doc.rs')
-rw-r--r-- | src/doc.rs | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -265,12 +265,25 @@ impl Document { pub fn lint(&self) -> Result<(), SubplotError> { trace!("Linting document"); self.check_doc_has_title()?; + self.check_scenarios_are_unique()?; self.check_filenames_are_unique()?; self.check_block_classes()?; trace!("No linting problems found"); Ok(()) } + // Check that all titles for scenarios are unique. + fn check_scenarios_are_unique(&self) -> Result<(), SubplotError> { + let mut known = HashSet::new(); + for title in self.scenarios()?.iter().map(|s| s.title().to_lowercase()) { + if known.contains(&title) { + return Err(SubplotError::DuplicateScenario(title)); + } + known.insert(title); + } + Ok(()) + } + // Check that all filenames for embedded files are unique. fn check_filenames_are_unique(&self) -> Result<(), SubplotError> { let mut known = HashSet::new(); |