public static void SaveRandomPortionToToloka(IAdapter adapter, SmartParser.Lib.TableHeader columnOrdering, Declaration declaration, string inputFileName) { if (TolokaFileName == "") { return; } string fileID = BuildInputFileId(adapter, inputFileName); using (System.IO.StreamWriter file = new System.IO.StreamWriter(TolokaFileName)) { file.WriteLine("INPUT:input_id\tINPUT:input_json\tGOLDEN:declaration_json\tHINT:text"); Random random = new Random(); int dataRowsCount = Math.Min(20, adapter.GetRowsCount() - columnOrdering.GetPossibleHeaderEnd()); int dataStart = random.Next(columnOrdering.GetPossibleHeaderEnd(), adapter.GetRowsCount() - dataRowsCount); int dataEnd = dataStart + dataRowsCount; var json = adapter.TablePortionToJson(columnOrdering, dataStart, dataEnd); json.InputFileName = inputFileName; json.Title = declaration.Properties.SheetTitle; string jsonStr = JsonConvert.SerializeObject(json); jsonStr = jsonStr.Replace("\t", " ").Replace("\\t", " ").Replace("\"", "\"\""); string id = fileID + "_" + dataStart + "_" + dataEnd; file.WriteLine(id + "\t" + "\"" + jsonStr + "\"\t\t"); } }
public TJsonTablePortion TablePortionToJson(TableHeader columnOrdering, int body_start, int body_end) { var table = new TJsonTablePortion(); table.DataStart = body_start; int headerEnd = columnOrdering.GetPossibleHeaderEnd(); for (int i = columnOrdering.GetPossibleHeaderBegin(); i < columnOrdering.GetPossibleHeaderEnd(); i++) { var row = GetJsonByRow(GetDataCells(i)); table.Header.Add(row); } // find section before data for (int i = body_start; i >= headerEnd; i--) { string dummy; // cannot use prevRowIsSection var row = GetDataCells(i); if (IsSectionRow(i, row, columnOrdering.GetMaxColumnEndIndex(), false, out dummy)) { table.Section.Add(GetJsonByRow(row)); break; } } int maxRowsCount = body_end - body_start; table.DataEnd = body_start; int addedRows = 0; while (table.DataEnd < GetRowsCount() && addedRows < maxRowsCount) { if (!IsEmptyRow(table.DataEnd)) { table.Data.Add(GetJsonByRow(GetDataCells(table.DataEnd))); addedRows++; } table.DataEnd++; } return(table); }