///|
pub fn Rule::to_ninja(self : Rule) -> String {
"rule " + self.name + "\n command = " + self.command + "\n"
}
///|
pub fn BuildEdge::to_ninja(self : BuildEdge) -> String {
let suffix = if self.inputs.is_empty() {
""
} else {
" " + join_strings(self.inputs, " ")
}
"build " + join_strings(self.outputs, " ") + ": " + self.rule + suffix + "\n"
}
///|
/// Serialize the supported subset into a deterministic, reviewable manifest.
pub fn Manifest::to_ninja(self : Manifest) -> String {
let mut result = "# MoonNinja generated manifest\n"
for _, rule in self.rules {
result += "\n" + rule.to_ninja()
}
for edge in self.builds {
result += edge.to_ninja()
}
result
}