use wobblechar::{Builder, Entry};
fn main() {
bool_mapper();
num_mapper();
multi_line_labeled();
custom_const_map();
}
fn bool_mapper() {
println!("--- bool mapper ---");
for item in Builder::<1>::new_from_string("_|‾|_")
.with_def_bool_mapper()
.build()
{
println!("t={} value={} changed={}", item.index, item.values[0], item.changed);
}
}
fn num_mapper() {
println!("--- num mapper (u8) ---");
for item in Builder::<2>::new_from_string("
_|‾|_
‾|_|‾
")
.with_def_num_mapper::<u8>()
.build()
{
println!("t={} values={:?} changed={}", item.index, item.values, item.changed);
}
}
fn multi_line_labeled() {
println!("--- labeled multi-line ---");
for item in Builder::<2>::new_from_string("
CLK: _|‾|_|‾|_ # first block
DAT: ___|‾‾‾|_
CLK: ‾|_|‾|_|‾ # continuation
DAT: |‾‾‾|__|‾
")
.with_def_bool_mapper()
.build()
{
println!(
"t={:02} CLK={} DAT={} changed={}",
item.index, item.values[0], item.values[1], item.changed
);
}
}
fn custom_const_map() {
println!("--- custom const map ---");
const MAP: &[(char, Entry<bool>)] = &[
('H', Entry::Value(true)),
('L', Entry::Value(false)),
('|', Entry::Toggle),
];
for item in Builder::<1>::new_from_string("LHL|H|L")
.with_const_bool_map(MAP)
.build()
{
println!("t={} value={} changed={}", item.index, item.values[0], item.changed);
}
}