public static LangMatrixRow adjustNewfulltextDataRow(Dictionary <string, LangMatrixRow> res, string lang) { if (!res.TryGetValue(lang, out LangMatrixRow row)) { res.Add(lang, row = new LangMatrixRow { lang = lang, row = new string[10], columnNames = new string[] { "0_breakGuid", "1_stemmGuid", "2_isEuroTalk", "3_isLingea", "4_isGoethe", "5_sqlQuery", "6_lcid", "7_GoogleTransApi", "8_MSWordCheck", "9_English" } }); } return(row); }
public LangMatrix(StreamReader rdr) : this() { try { var lines = rdr.ReadAllLines().ToArray(); var cell00 = lines[0].Split(new char[] { ';' }, 2)[0].Split('/'); LangMatrixRow[] rawLines = null; var data = new List <string[]>(); if (cell00.Length != 2) // => RJ import format: change COLS and ROWS { var matxOld = lines.Select(l => l.Split(';')).ToArray(); var len = matxOld[0].Length; if (!matxOld.All(r => r.Length == len)) { throw new Exception(); } var matxNew = new List <string[]>(); for (var i = 0; i < matxOld[0].Length; i++) { matxNew.Add(new string[matxOld.Length]); } for (var i = 0; i < matxOld.Length; i++) { for (var j = 0; j < matxOld[0].Length; j++) { matxNew[j][i] = matxOld[i][j].Replace('\t', ' ').Replace("@@s", ";"); } } rawLines = readRaw(matxNew); for (var i = 0; i < rawLines.Length; i++) { rawLines[i].lang = Langs.oldToNew(rawLines[i].lang); } rawLines = new LangMatrixRow[] { null }.Concat(rawLines).ToArray(); cell00 = new string[] { "lang", "" }; //var colsNum = rawLines.Length - 1; //var rowsNum = rawLines[0].row.Length + 1; // adds 1 for rawLines[].lang //langs = new string[rawLines[0].row.Length + 1]; //for (var rowIdx = 0; rowIdx < rowsNum; rowIdx++) { // if (rowIdx == 0) langs[0] = rawLines[0].lang; // else langs[rowIdx] = rawLines[0].row[rowIdx - 1]; //} //for (var i = 0; i < langs.Length; i++) langs[i] = Langs.oldToNew(langs[i]); //for (var rowIdx = 0; rowIdx < rowsNum; rowIdx++) { // var row = new string[colsNum]; // for (var colIdx = 0; colIdx < colsNum; colIdx++) { // if (rowIdx == 0) row[colIdx] = rawLines[colIdx + 1].lang; // else row[colIdx] = rawLines[colIdx + 1].row[rowIdx - 1]; // } // data.Add(row); //} } else { rawLines = readRaw(lines); } var langs = new List <string>(); var groupTheSameRows = cell00[0] == "langs"; // group by rows if (cell00[1] == "colNames") { colNames = rawLines[0].row; // save column names } rawLines.Skip(1).ForEach(l => { foreach (var lang in groupTheSameRows ? l.lang.Split(',') : Linq.Items(l.lang)) { langs.Add(lang); data.Add(l.row); } }); this.langs = langs.ToArray(); this.data = data.ToArray(); } finally { rdr.Close(); } }