public List <NotifyItem> CheckNotify(string txt) { var result = new List <NotifyItem>(); var lines = txt.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); List <NameValue> des = new List <NameValue>(); List <string> api_line = new List <string>(); foreach (var line in lines) { if (string.IsNullOrWhiteSpace(line)) { continue; } api_line.Add(line); var l = line.Trim(); if (l.IndexOf("//", StringComparison.Ordinal) == 0)//注释 { l = l.Trim(CoderBase.NoneLanguageChar); if (string.IsNullOrWhiteSpace(l)) { continue; } var str = l.Split(CoderBase.EmptyChar, 2); if (str.Length >= 2) { des.Add(new NameValue(str[0], str[1])); } else if (des.Count > 0) { des.Last().value += l; } continue; } l = l.Trim(CoderBase.NoneNameChar); if (string.IsNullOrWhiteSpace(l)) { continue; } var item = CheckNotifyItem(l); if (des.Count > 1) { var dess = des.FirstOrDefault(p => p.name == "brief"); item.Caption = dess?.value.Split(CoderBase.NoneNameChar, 2)[0]; item.Description = dess?.value; } item.Org = api_line.LinkToString("\n"); result.Add(item); api_line.Clear(); des.Clear(); } foreach (var it in result) { CoderBase.RepairConfigName(it, true); } return(result); }
public List <TypedefItem> CheckTypedef(string txt) { var result = new List <TypedefItem>(); var lines = txt.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); TypedefItem item = new TypedefItem(); foreach (var line in lines) { if (string.IsNullOrWhiteSpace(line)) { continue; } var l = line.Trim(); if (l.IndexOf("//", StringComparison.Ordinal) == 0)//注释 { item = new TypedefItem { Tag = SystemName, Description = line.Trim(CoderBase.NoneLanguageChar) }; item.Caption = item.Description; } else { item = CheckTypedef(result, ref item, l); } } foreach (var it in result) { CoderBase.RepairConfigName(it, true); foreach (var pro in it.Items.Values) { CoderBase.RepairConfigName(pro, true); } } return(result); }
public List <EntityConfig> CheckCppFieldes(string text) { List <EntityConfig> tables = new List <EntityConfig>(); string[] lines = text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); int idx = 0; EntityConfig entity = new EntityConfig(); bool isNewTable = true; bool isInStruct = false; foreach (string l in lines) { if (string.IsNullOrEmpty(l)) { continue; } var line = l.Trim(' ', '\t', ';'); if (string.IsNullOrEmpty(line)) { continue; } switch (line) { case "{": isInStruct = true; continue; case "}": isNewTable = true; isInStruct = false; entity = new EntityConfig(); continue; } if (line.IndexOf("//", StringComparison.Ordinal) == 0) //注释 { if (isNewTable || line.Contains("//!")) { entity.Caption = line.Trim(CoderBase.NoneLanguageChar); isNewTable = false; } else { entity.Description = line.Trim(CoderBase.NoneLanguageChar); } continue; } string[] words = line.Split(new[] { ' ', ';', '\t' }, StringSplitOptions.RemoveEmptyEntries); switch (words[0]) { case "typedef": var item = new TypedefItem { Tag = SystemName }; var i = l.IndexOf('['); if (i < 0) { item.Name = words[words.Length - 1]; } else { var ks = l.Split(new[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries); item.ArrayLen = ks[1]; words = ks[0].Split(new[] { '\t', ' ', ';', '=' }, StringSplitOptions.RemoveEmptyEntries); } item.Description = entity.Caption; item.Name = words[words.Length - 1].Trim(CoderBase.NoneLanguageChar); item.KeyWork = string.Empty; for (int index = 1; index < words.Length - 1; index++) { item.KeyWork += " " + words[index]; } InvokeInUiThread(() => TypedefItems.Add(item)); continue; case "struct": entity.Name = words[1]; if (words.Length > 2) { entity.Caption = words[2].Trim(CoderBase.NoneNameChar); } tables.Add(entity); isInStruct = false; idx = 0; continue; case "private": case "protected": case "public": continue; } if (!isInStruct) { continue; } PropertyConfig column; entity.Properties.Add(column = new PropertyConfig { Index = idx++, DbType = "nvarchar" }); words = line.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (words.Length > 1) { column.Description = column.Caption = words[1].Trim('/', '\t', ' '); } words = words[0].Split(new[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries); if (words.Length > 1) { column.Datalen = int.Parse(words[1].Trim('/', '\t', ' ')); } words = words[0].Split(new[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries); int nameIdx = words.Length - 1; column.Name = column.ColumnName = words[nameIdx].Trim(CoderBase.NoneLanguageChar); column.CppType = ""; for (int index = 0; index < nameIdx; index++) { if (index > 0) { column.CppType += " " + words[index]; } else { column.CppType = words[index]; } } } foreach (var t in tables) { t.Parent = Project; t.Tag = SystemName + "," + t.Name; t.CppName = t.Name; CoderBase.RepairConfigName(t, true); foreach (var pro in t.Properties) { pro.Parent = t; pro.CppName = pro.CppName; CoderBase.RepairConfigName(pro, true); pro.CppLastType = CppTypeHelper.CppLastType(pro.CppType); pro.CsType = CppTypeHelper.CppTypeToCsType(pro); } t.IsClass = true; //EntityBusinessModel business = new EntityBusinessModel //{ // Entity = t //}; //t.IsReference = true; //business.RepairByModel(true); //t.IsReference = false; } return(tables); }