/// <summary> /// method to parse multitext defined in only one line /// </summary> /// <param name="config">config structure</param> /// <param name="tableName">name of table</param> /// <param name="column">name of column in db</param> /// <param name="line">a line in names</param> /// <param name="nameLine">a line in names</param> /// <param name="names">names which will contains name in all langs</param> private static string parseMultitextLine(CIniFile config, string tableName, string column, string line, List <string> nameLine, string[] names) { //Textlist on a tag int multitextIndex = nameLine.FindIndex(s => s.Contains("multitext")); string TextListName = nameLine[multitextIndex + 1].Trim(); ColumnTextlistDefine.Add(column, TextListName); //To add textlist into helper class //Only add rest of tag also into NameDef string[] eqeuateSplit = line.Split(Const.separ_equate, StringSplitOptions.RemoveEmptyEntries); string[] langs = eqeuateSplit[1].Split(Const.separ_dollar, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < langs.Length; i++) { string[] parts = langs[i].Split(Const.separ_semicolon, StringSplitOptions.RemoveEmptyEntries); names[i] = parts[0]; } List <string> units = null; //yes add only null NameDefinition.Add(config, column, names, units, tableName); //Adds name to names return(TextListName); }
private int parseNameDefinition(CIniFile config, string[] separators, string[] lines, int startLineIdx) { string[] nameLine = null, nameLineFirstPart = null, nameLineLangMutate = null; string tableName = null; List <string[]> multitext_lines = new List <string[]>(); for (int i = startLineIdx; i < lines.Length; i++) { List <string> units = new List <string>(); string[] langs = new string[config.LangEnbList.Count]; if (!(lines[i].StartsWith("#")) && (lines[i].Length != 0)) { nameLine = lines[i].Split(Const.separ_equate, StringSplitOptions.RemoveEmptyEntries); nameLineFirstPart = nameLine[0].Split(separators, StringSplitOptions.RemoveEmptyEntries); nameLineLangMutate = nameLine[1].Split(Const.separ_names, StringSplitOptions.RemoveEmptyEntries); foreach (CView view in config.ViewList) { foreach (CField field in view.FieldList) { foreach (CSignal signal in field.SigList) { if (signal.column.Contains(nameLineFirstPart[1])) { tableName = signal.table; } } } } int j = 0; for (int idx = 0; idx < nameLineLangMutate.Length; idx = idx + 2) { if (!(nameLineLangMutate[idx + 1].Contains(@"\")) && !(nameLineLangMutate[idx + 1].Contains("multitext:"))) { if (nameLineLangMutate.Length > config.LangEnbList.Count) { langs[j] = nameLineLangMutate[idx]; units.Insert(j, nameLineLangMutate[idx + 1]); j++; } else { langs[j] = nameLineLangMutate[idx]; j++; } } else { langs[j] = nameLineLangMutate[idx]; if (!(nameLineLangMutate[idx + 1].Contains("multitext:"))) { multitextInline(config, tableName, nameLine[1]); idx = nameLineLangMutate.Length; } else { int pos = nameLineLangMutate[idx + 1].LastIndexOf(":"); string TextlistName = nameLineLangMutate[idx + 1].Substring(pos + 1); ColumnTextlistDefine.Add(nameLineFirstPart[1], TextlistName); } j++; } } NameDefinition.Add(config, nameLineFirstPart[1], langs, units, tableName); } else { return(i); } } return(0); }