pub const STRING_UTILS: &str = include_str!("../stdlib/string_utils.aether");
pub const ARRAY_UTILS: &str = include_str!("../stdlib/array_utils.aether");
pub const VALIDATION: &str = include_str!("../stdlib/validation.aether");
pub const DATETIME: &str = include_str!("../stdlib/datetime.aether");
pub const TESTING: &str = include_str!("../stdlib/testing.aether");
pub const SET: &str = include_str!("../stdlib/set.aether");
pub const QUEUE: &str = include_str!("../stdlib/queue.aether");
pub const STACK: &str = include_str!("../stdlib/stack.aether");
pub const HEAP: &str = include_str!("../stdlib/heap.aether");
pub const SORTING: &str = include_str!("../stdlib/sorting.aether");
pub const JSON: &str = include_str!("../stdlib/json.aether");
pub const CSV: &str = include_str!("../stdlib/csv.aether");
pub const FUNCTIONAL: &str = include_str!("../stdlib/functional.aether");
pub const CLI_UTILS: &str = include_str!("../stdlib/cli_utils.aether");
pub const TEXT_TEMPLATE: &str = include_str!("../stdlib/text_template.aether");
pub const REGEX_UTILS: &str = include_str!("../stdlib/regex_utils.aether");
pub const ALL_MODULES: &[(&str, &str)] = &[
("string_utils", STRING_UTILS),
("array_utils", ARRAY_UTILS),
("validation", VALIDATION),
("datetime", DATETIME),
("testing", TESTING),
("set", SET),
("queue", QUEUE),
("stack", STACK),
("heap", HEAP),
("sorting", SORTING),
("json", JSON),
("csv", CSV),
("functional", FUNCTIONAL),
("cli_utils", CLI_UTILS),
("text_template", TEXT_TEMPLATE),
("regex_utils", REGEX_UTILS),
];
pub fn get_module(name: &str) -> Option<&'static str> {
match name {
"string_utils" => Some(STRING_UTILS),
"array_utils" => Some(ARRAY_UTILS),
"validation" => Some(VALIDATION),
"datetime" => Some(DATETIME),
"testing" => Some(TESTING),
"set" => Some(SET),
"queue" => Some(QUEUE),
"stack" => Some(STACK),
"heap" => Some(HEAP),
"sorting" => Some(SORTING),
"json" => Some(JSON),
"csv" => Some(CSV),
"functional" => Some(FUNCTIONAL),
"cli_utils" => Some(CLI_UTILS),
"text_template" => Some(TEXT_TEMPLATE),
"regex_utils" => Some(REGEX_UTILS),
_ => None,
}
}
pub fn get_all_stdlib() -> String {
let mut result = String::new();
result.push_str("// Aether Standard Library - Auto-loaded\n\n");
for (name, code) in ALL_MODULES {
result.push_str(&format!("// ========== {} ==========\n", name));
result.push_str(code);
result.push_str("\n\n");
}
result
}
pub fn preload_stdlib(engine: &mut crate::Aether) -> Result<(), String> {
for (name, code) in ALL_MODULES {
engine
.eval(code)
.map_err(|e| format!("Failed to load stdlib module '{}': {}", name, e))?;
}
Ok(())
}