var fs = require("fs"); var messages = require(__dirname + "/../src/diagnosticMessages.json"); var sb = [ "/**\n", " * Generated from diagnosticsMessages.json. Do not edit.\n", " * @module diagnostics\n", " *//***/\n\n", "/* tslint:disable:max-line-length */\n\n" ]; function makeKey(text) { return text.replace(/[^\w]+/g, "_").replace(/_+$/, ""); } sb.push("/** Enum of available diagnostic codes. */\n"); sb.push("export enum DiagnosticCode {\n"); var first = true; Object.keys(messages).forEach(text => { var key = makeKey(text); if (first) first = false; else { sb.push(",\n"); } sb.push(" " + key + " = " + messages[text]); }); sb.push("\n}\n\n"); sb.push("/** Translates a diagnostic code to its respective string. */\n"); sb.push("export function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n"); Object.keys(messages).forEach(text => { sb.push(" case " + messages[text] + ": return " + JSON.stringify(text) + ";\n"); }); sb.push(" default: return \"\";\n }\n}\n"); fs.writeFileSync(__dirname + "/../src/diagnosticMessages.generated.ts", sb.join(""), { encoding: "utf8" });