///|
fn main {
let args = @env.args()
let payload = first_payload(args).unwrap_or(
"(01)09501101530003(10)BATCH-7(17)260930",
)
try {
let parsed = @barcoder.parse_gs1(payload)
println(parsed.to_hri())
if has_flag(args, "--validate") {
println(parsed.validate().summary())
}
if has_flag(args, "--encode") || has_flag(args, "--ascii") {
match @barcoder.encode_gs1_128(parsed) {
Ok(encoded) => {
println(
"symbols=\{encoded.symbol_count}; modules=\{encoded.module_count}",
)
if has_flag(args, "--ascii") {
println(@barcoder.render_code128_ascii(encoded, quiet_zone=10))
}
}
Err(_) => println("Code 128 encoding failed")
}
}
if has_flag(args, "--benchmark") {
let report = @barcoder.benchmark_parse(payload, iterations=1000)
println(report.summary())
}
} catch {
_ => println("invalid GS1 payload")
}
}
///|
fn first_payload(args : Array[String]) -> String? {
for index, arg in args {
if index > 0 && !arg.has_prefix("--") {
return Some(arg)
}
}
None
}
///|
fn has_flag(args : Array[String], flag : String) -> Bool {
for arg in args {
if arg == flag {
return true
}
} nobreak {
false
}
}