use std::sync::OnceLock;
#[derive(Clone, Copy, Debug)]
pub struct MergeOptions {
pub prefix: &'static str,
pub separator: &'static str,
}
impl Default for MergeOptions {
fn default() -> Self {
MERGE_OVERRIDE.get().copied().unwrap_or(DEFAULT_MERGE_OPTIONS)
}
}
const DEFAULT_MERGE_OPTIONS: MergeOptions = MergeOptions { prefix: "", separator: ":" };
impl From<MergeOptions> for crate::ast::AstParseOptions<'static> {
fn from(options: MergeOptions) -> Self {
crate::ast::AstParseOptions { prefix: options.prefix, separator: options.separator }
}
}
pub(crate) static MERGE_OVERRIDE: OnceLock<MergeOptions> = OnceLock::new();
pub fn set_merge_options(options: MergeOptions) {
let _ = MERGE_OVERRIDE.set(options);
}