#[path = "support.rs"]
mod support;
use noyalib::{
DuplicateKeyPolicy, ParserConfig, SerializerConfig, YamlVersion, parser_config,
serializer_config,
};
fn main() {
support::header("noyalib -- config_macros");
support::task_with_output(
"parser_config! — flip several knobs in one expression",
|| {
let cfg = parser_config! {
max_depth: 32,
max_alias_expansions: 200,
strict_booleans: true,
duplicate_key_policy: DuplicateKeyPolicy::Error,
version: YamlVersion::V1_1,
};
vec![
format!("max_depth = {}", cfg.max_depth),
format!("max_alias_expansions = {}", cfg.max_alias_expansions),
format!("strict_booleans = {}", cfg.strict_booleans),
format!("duplicate_key_policy = {:?}", cfg.duplicate_key_policy),
format!("version = {:?}", cfg.yaml_version),
]
},
);
support::task_with_output("parser_config! {} — empty form == new()", || {
let from_macro = parser_config! {};
let from_new = ParserConfig::new();
vec![
format!("macro.max_depth = new.max_depth = {}", from_macro.max_depth),
format!("both equal? {}", from_macro.max_depth == from_new.max_depth),
]
});
support::task_with_output("serializer_config! — same pattern for emit knobs", || {
let cfg = serializer_config! {
indent: 4,
quote_all: true,
};
let _ = SerializerConfig::new(); vec![
format!("indent = {}", cfg.indent),
format!("quote_all = {}", cfg.quote_all),
]
});
support::task_with_output(
"Equivalent to chained builders — pick whichever reads cleaner",
|| {
let from_macro = parser_config! {
max_depth: 16,
max_alias_expansions: 50,
};
let from_chain = ParserConfig::new().max_depth(16).max_alias_expansions(50);
vec![format!(
"max_depth match: {}, alias match: {}",
from_macro.max_depth == from_chain.max_depth,
from_macro.max_alias_expansions == from_chain.max_alias_expansions
)]
},
);
}