From 4fc63f27a1a879e4b724b7e478dbd3047961ae71 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Tue, 3 Mar 2015 09:28:44 +0100 Subject: [PATCH] Json backend improvements --- backends/json/json.cc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/backends/json/json.cc b/backends/json/json.cc index 33abccee2..889e5b7ec 100644 --- a/backends/json/json.cc +++ b/backends/json/json.cc @@ -43,8 +43,13 @@ struct JsonWriter string get_string(string str) { - // FIXME: proper string escaping - return stringf("\"%s\"", str.c_str()); + string newstr = "\""; + for (char c : str) { + if (c == '\\') + newstr += c; + newstr += c; + } + return newstr + "\""; } string get_name(IdString name) @@ -157,7 +162,9 @@ struct JsonWriter void write_design(Design *design_) { design = design_; - f << stringf("{\n \"modules\": {\n"); + f << stringf("{\n"); + f << stringf(" \"creator\": %s,\n", get_string(yosys_version_str).c_str()); + f << stringf(" \"modules\": {\n"); vector modules = use_selection ? design->selected_modules() : design->modules(); bool first_module = true; for (auto mod : modules) { @@ -166,7 +173,8 @@ struct JsonWriter write_module(mod); first_module = false; } - f << stringf("\n }\n}\n"); + f << stringf("\n }\n"); + f << stringf("}\n"); } }; -- 2.30.2