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