use std::io::Read; use code128::Code128; fn main() { let mut msg = Vec::new(); if atty::isnt(atty::Stream::Stdin) { let mut stdin = std::io::stdin(); stdin.read_to_end(&mut msg).unwrap(); } let msg = String::from_utf8(msg).unwrap(); let code = Code128::encode_str(&msg).unwrap(); let mut svg = String::new(); let height = 20; svg += &format!( r#"<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {} {}"><path d="M10 0"#, code.len(), height, ); for bar in code.bars() { svg += &format!( r#"h{0}v{1}h-{0}zm{2} 0"#, bar.width, height, bar.space + bar.width ); } svg += r#""/></svg>"#; println!("{}", svg); }