public static void Export(ProtoManager pm) { ProtoModuleData server = pm.apiReader.modules.GetValueByKey("test"); ProtoModuleData client = pm.apiReader.modules.GetValueByKey("ClientGM"); ExportModule(server, true, Setting.Options.jsonServerGM); ExportModule(client, false, Setting.Options.jsonClientGM); }
private void Read(string path) { Console.WriteLine(path); string jsonTxt = File.ReadAllText(path); JsonData jsonData = JsonMapper.ToObject(jsonTxt); foreach (var key in jsonData.Keys) { ProtoModuleData module = new ProtoModuleData(); module.name = key; this.modules.Add(module.name, module); JsonData jModule = jsonData[key]; foreach (var mKey in jModule.Keys) { ProtoMessageData msg = new ProtoMessageData(); msg.name = mKey; module.AddMsg(msg); JsonData jMsg = jModule[mKey]; JsonData jReq = jMsg["<req>"]; JsonData jRes = jMsg["<res>"]; foreach (var fieldKey in jReq.Keys) { string fieldName = fieldKey.ToString(); msg.req.Add(fieldName, jReq[fieldName].ToString()); } foreach (var fieldKey in jRes.Keys) { string fieldName = fieldKey.ToString(); msg.res.Add(fieldName, jRes[fieldName].ToString()); } } } ReadNote(jsonTxt); }
private static void ExportModule(ProtoModuleData data) { List <object[]> funCodeList = new List <object[]>(); List <ProtoMessageData> msgValues = data.msgs.Values; foreach (var msgData in msgValues) { string code = GenerateFunCode(msgData); msgData.req.code = code; funCodeList.Add(new object[] { code }); } string path = string.Format(TsPathOut.ApiSender, data.name); string content = ""; if (!File.Exists(path)) { TemplateSystem template = new TemplateSystem(tplContent); template.AddVariable("classNote", data.cnname); template.AddVariable("className", data.moduleSenderClassName); template.AddVariable("name", data.name); template.AddVariable("funCodeList", funCodeList.ToArray()); content = template.Parse(); PathHelper.CheckPath(path); File.WriteAllText(path, content); } else { List <string> addCodeList = new List <string>(); string code = File.ReadAllText(path); foreach (var msgData in msgValues) { string pattern = $@"{msgData.name}\s*\([\s\S]*?\)\s*{{"; Regex regex = new Regex(pattern); //Console.WriteLine(); //Console.WriteLine(); //Console.WriteLine(pattern); //Console.WriteLine(regex.IsMatch(code)); if (!regex.IsMatch(code)) { addCodeList.Add(msgData.req.code); } //int i = 0; //MatchCollection mc = regex.Matches(code); //foreach (var v in mc) //{ // Console.WriteLine(i + " " + v.ToString()); // i++; //} } if (addCodeList.Count > 0) { string pattern = @"}\s*}"; Regex regex = new Regex(pattern, RegexOptions.RightToLeft); code = regex.Replace(code, String.Join("", addCodeList) + "\n\t}\n}", 1); File.WriteAllText(path, code); } } }
private static void ExportModule(ProtoModuleData data, bool isReq, string path) { Dictionary <string, JsonData> preCmdDict = new Dictionary <string, JsonData>(); JsonData preJD = null; if (File.Exists(path)) { preJD = JsonMapper.ToObject(File.ReadAllText(path)); foreach (JsonData preCmd in preJD) { preCmdDict.Add(preCmd["name"].ToString(), preCmd); } } List <ProtoMessageData> msgs = data.msgs.Values; JsonData jd = new JsonData(); jd.SetJsonType(JsonType.Array); foreach (ProtoMessageData msg in msgs) { JsonData cmd = new JsonData(); cmd.SetJsonType(JsonType.Object); cmd["cnname"] = msg.cnname; cmd["name"] = msg.name; JsonData cmdData = new JsonData(); cmdData.SetJsonType(JsonType.Object); Dictionary <string, FieldData> fields; if (isReq) { fields = msg.req.fields; } else { fields = msg.res.fields; } foreach (var kvp in fields) { FieldData field = kvp.Value; JsonData val = null; if (preCmdDict.ContainsKey(msg.name) && preCmdDict[msg.name].ContainsKey("data") && preCmdDict[msg.name]["data"].ContainsKey(field.fieldName)) { val = preCmdDict[msg.name]["data"][field.fieldName]; } if (val == null) { switch (field.tsType) { case "string": val = new JsonData("1"); break; case "number": val = new JsonData(1); break; case "boolean": val = new JsonData(true); break; case "string[]": val = new JsonData(); val.SetJsonType(JsonType.Array); val.Add("1"); break; case "number[]": val = new JsonData(); val.SetJsonType(JsonType.Array); val.Add(1); break; case "boolean[]": val = new JsonData(); val.SetJsonType(JsonType.Array); val.Add(true); break; } } cmdData[field.fieldName] = val; } cmd["data"] = cmdData; jd.Add(cmd); } string json = JsonMapper.ToJson(jd).ConvertJsonString(); PathHelper.CheckPath(path); File.WriteAllText(path, json, Encoding.UTF8); }