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