public static CsvData GetValidCsvData(string csvText, GlobalCCSettings gSettings) { var csvAsList = CsvParser.ReadAsList(csvText); CsvData csvData = new CsvData(); csvData.SetFromList(csvAsList); // END マーカーが有効な場合は END 以下を無視するようにする. if (gSettings.isEndMarkerEnabled) { int endMarkerIndex = gSettings.columnIndexOfEndMarker; string marker = gSettings.endMarker; if (endMarkerIndex < 0 || csvData.col <= endMarkerIndex) { throw new Exception("無効な columnIndexOfEndMarker です: " + endMarkerIndex); } for (int i = 0; i < csvData.row; i++) { if (csvData.Get(i, endMarkerIndex).Trim() == marker) { csvData = csvData.Slice(0, i); break; } } } // 無効な列を除外する csvData = csvData.SliceColumn(gSettings.columnIndexOfTableStart); return(csvData); }
private string createAssetName(int rowIndex) { string fileName = ""; // キーがある場合は、キーの値をアセット名に含める. if (keyIndexes.Length > 0) { fileName = setting.className; for (int j = 0; j < keyIndexes.Length; j++) { int keyIndex = keyIndexes[j]; fileName += "_" + content.Get(rowIndex, keyIndex).Trim(); } fileName += ".asset"; } else { fileName = setting.className + rowIndex + ".asset"; } return(fileName); }
public static Field[] GetFieldsFromHeader(CsvData grid) { var fields = new Field[grid.col]; for (int i = 0; i < fields.Length; i++) { fields[i] = new Field(); } // get field names; for (int col = 0; col < grid.col; col++) { string fieldName = grid.Get(0, col); fieldName = fieldName.Trim(); if (fieldName == string.Empty) { fields[col].isValid = false; continue; } fields[col].fieldName = fieldName; } // set field types; for (int col = 0; col < grid.col; col++) { if (!fields[col].isValid) { continue; } fields[col].typeName = fields[col].fieldName; } return(fields); }
public static Field[] GetFieldsFromHeader(CsvData csv, GlobalCCSettings gSettings) { CsvData nameHeaders = csv.Slice(gSettings.rowIndexOfName, gSettings.rowIndexOfName + 1); CsvData typeHeaders = csv.Slice(gSettings.rowIndexOfType, gSettings.rowIndexOfType + 1); var fields = new Field[csv.col]; for (int i = 0; i < fields.Length; i++) { fields[i] = new Field(); } // enabled check if (gSettings.rowIndexOfEnabledColumn != -1) { CsvData enabledHeaders = csv.Slice(gSettings.rowIndexOfEnabledColumn, gSettings.rowIndexOfEnabledColumn + 1); for (int col = 0; col < csv.col; col++) { string enabledCell = enabledHeaders.Get(0, col); if (!GetEnabledColumn(enabledCell)) { fields[col].isValid = false; } } } // get field names; for (int col = 0; col < csv.col; col++) { string fieldName = nameHeaders.Get(0, col); fieldName = fieldName.Trim(); if (fieldName == string.Empty) { fields[col].isValid = false; continue; } fields[col].fieldName = fieldName; } // set field types; for (int col = 0; col < csv.col; col++) { if (!fields[col].isValid) { continue; } string typeName = typeHeaders.Get(0, col).Trim(); if (typeName == string.Empty) { fields[col].isValid = false; continue; } fields[col].typeName = typeName; } return(fields); }
public static string Generate(string name, CsvData header, CsvData contents, bool verbose = false) { Field[] fields = GetFieldsFromHeader(header); if (verbose) { Debug.Log("header fields: " + fields.ToString <Field>()); } string classData = ""; classData += "public enum " + name + "\n"; classData += "{\n"; for (int i = 0; i < contents.row; i++) { int line = i + 2; string eid = ""; int value = -1; bool isOkEid = false; bool isOkValue = false; for (int j = 0; j < contents.col; j++) { Field f = fields[j]; if (!f.isValid) { continue; } if (f.fieldName == ID_NAME) { eid = contents.Get(i, j).Trim(); if (!string.IsNullOrWhiteSpace(eid)) { isOkEid = true; } } else if (f.fieldName == VALUE_NAME) { isOkValue = true; string vs = contents.Get(i, j).Trim(); if (!int.TryParse(vs, out value)) { Debug.LogWarningFormat("{0} line {1}: int に変換出来ない値です: \"{2}\"", name, line, vs); isOkValue = false; continue; } } } if (!isOkEid || !isOkValue) { if (verbose) { Debug.Log(i + ": INVALID : " + contents.content[i].ToString()); } continue; } if (verbose) { Debug.Log(i + ": OK : " + contents.content[i].ToString()); } classData += string.Format(FIELD_FORMAT, eid, value); } classData += "}"; return(classData); }