From a40d02c9eb1c7226bc7db87b014dc827e77f2a08 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 24 Oct 2019 19:29:38 +0300 Subject: refactor comment extraction from tasks --- xtask/src/codegen.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'xtask/src/codegen.rs') diff --git a/xtask/src/codegen.rs b/xtask/src/codegen.rs index 948b86719..bf3a90119 100644 --- a/xtask/src/codegen.rs +++ b/xtask/src/codegen.rs @@ -8,7 +8,7 @@ mod gen_syntax; mod gen_parser_tests; -use std::{fs, path::Path}; +use std::{fs, mem, path::Path}; use crate::Result; @@ -44,3 +44,26 @@ pub fn update(path: &Path, contents: &str, mode: Mode) -> Result<()> { fs::write(path, contents)?; Ok(()) } + +fn extract_comment_blocks(text: &str) -> Vec> { + let mut res = Vec::new(); + + let prefix = "// "; + let lines = text.lines().map(str::trim_start); + + let mut block = vec![]; + for line in lines { + let is_comment = line.starts_with(prefix); + if is_comment { + block.push(line[prefix.len()..].to_string()); + } else { + if !block.is_empty() { + res.push(mem::replace(&mut block, Vec::new())) + } + } + } + if !block.is_empty() { + res.push(mem::replace(&mut block, Vec::new())) + } + res +} -- cgit v1.2.3