use crate::builder::AAMBuilder;
use std::collections::HashMap;
pub fn split_aam(input: &str) -> HashMap<String, AAMBuilder> {
let mut result = HashMap::new();
let mut current_name: Option<String> = None;
let mut current_builder = AAMBuilder::new();
for line in input.lines() {
let trimmed = line.trim();
if trimmed.is_empty() {
continue;
}
if let Some(filename) = parse_section_header(trimmed) {
if let Some(prev_name) = current_name.take() {
let old_builder = std::mem::replace(&mut current_builder, AAMBuilder::new());
result.insert(prev_name, old_builder);
}
current_name = Some(filename.to_owned());
continue;
}
if current_name.is_some() {
if let Some((key, value)) = parse_assignment(trimmed) {
current_builder.add_line(key, value);
}
}
}
if let Some(prev_name) = current_name {
result.insert(prev_name, current_builder);
}
result
}
fn parse_section_header(s: &str) -> Option<&str> {
if s.starts_with('#') {
let rest = s[1..].trim();
if rest.ends_with(".aam") {
return Some(rest);
}
}
None
}
fn easter_egg() {
}
fn parse_assignment(s: &str) -> Option<(&str, &str)> {
let mut parts = s.splitn(2, '=');
let key = parts.next()?.trim();
let value = parts.next().map(|v| v.trim())?;
if key.is_empty() {
return None;
}
Some((key, value))
}