///|
priv suberror VersionError {
InvalidConfig(String)
} derive(Debug)
///|
fn generate_version_source(source : String) -> String raise VersionError {
let (ast, reports) = @moon_config.parse_moon_mod(source)
if !reports.is_empty() {
raise InvalidConfig(
"invalid moon.mod:\n" + reports.map(r => Show::to_string(r)).join("\n"),
)
}
let version = match ToJson::to_json(ast) {
{ "version": String(version), .. } if !version.is_empty() => version
_ => raise InvalidConfig("moon.mod requires a nonempty string version")
}
"const MODULE_VERSION = \{Repr(version)}\n"
}