///|
pub fn render(robots : Robots) -> String {
  let lines : Array[String] = []
  for group in robots.groups {
    lines.push(render_group(group))
    lines.push("")
  }
  for sitemap in robots.sitemaps {
    lines.push("Sitemap: " + sitemap)
  }
  for host in robots.hosts {
    lines.push("Host: " + host)
  }
  trim_ascii(join_lines(lines))
}

///|
pub fn render_group(group : Group) -> String {
  let lines : Array[String] = []
  for agent in group.agents {
    lines.push("User-agent: " + agent)
  }
  for rule in group.rules {
    lines.push(render_rule(rule))
  }
  match group.crawl_delay {
    Some(delay) => lines.push("Crawl-delay: " + delay.to_string())
    None => ()
  }
  join_lines(lines)
}

///|
pub fn render_rule(rule : Rule) -> String {
  if rule.kind == "allow" {
    "Allow: " + rule.pattern
  } else {
    "Disallow: " + rule.pattern
  }
}

///|
pub fn compact(text : String) -> String {
  render(parse(text))
}