///|
/// primer_web - 浏览器端引物设计工具(MoonBit 计算侧).
///
/// 对模板序列运行 primer3 设计引擎并输出 JSON(report.json),
/// 由同目录 index.html 渲染候选表/引物对产物视图.
/// 生成: moon run examples/primer_web -- "$(cat template.txt)" > report.json
/// 演示: moon run examples/primer_web -- --demo > report.json
fn main {
  let argv : Array[String] = []
  for i, a in @env.args() {
    let is_prog = i == 0 && a.find("/") is Some(_)
    if a.length() > 0 && !is_prog {
      argv.push(a)
    }
  }
  let template = if argv.length() == 0 || argv[0] == "--demo" {
    @src.primer3_sample_template()
  } else {
    argv.join("")
  }
  // 盐校正 Tm 公式(81.5 + 16.6·log10[Na⁺] + 0.41·GC% - 600/n)在 50mM
  // 下基线约 59.8, 默认 55-65 区间过窄; 演示采用与库测试一致的宽容配置.
  let cfg = @src.Primer3Config::new(
    18, 22, 40.0, 75.0, 0.3, 0.8, 8, 8, 0.05, 50,
  )
  println(@src.primer3_design_report_json(template, config=cfg))
}