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);
}