diff --git a/src/replacer/line_replacer.rs b/src/replacer/line_replacer.rs new file mode 100644 index 0000000..3ebd879 --- /dev/null +++ b/src/replacer/line_replacer.rs @@ -0,0 +1,44 @@ +#[derive(Debug)] +pub struct Pair { + regex: regex::Regex, + rep: String, +} + +#[derive(Debug)] +pub enum Opt { + ReplaceLineIfMatch, + AnotherOption, +} + +pub fn replace_line, S: AsRef>( + pairs: P, + opts: Vec, + content: S, +) -> Vec { + let pairs = pairs.as_ref(); + let content = content.as_ref(); + + let mut lines = content.lines().map(|x| x.to_owned()).collect::>(); + + for opt in opts { + match opt { + Opt::ReplaceLineIfMatch => replace_line_if_match(pairs, &mut lines), + Opt::AnotherOption => other(pairs, &mut lines), + } + } + lines +} + +fn replace_line_if_match(pairs: &[Pair], lines: &mut Vec) { + for line in lines.iter_mut() { + for Pair { regex, rep } in pairs { + if regex.is_match(&line) { + *line = rep.clone(); + } + } + } +} + +fn other(pairs: &[Pair], lines: &mut Vec) { + unimplemented!() +} diff --git a/src/replacer.rs b/src/replacer/mod.rs similarity index 100% rename from src/replacer.rs rename to src/replacer/mod.rs