Beispiel #1
0
        public static string ExportNGUILegacyString(Google2uWorksheet in_sheet, Google2uExportOptions in_options,
                                                    int in_langIndex)
        {
            var ret = FormatLine("Flag = Flag-" + in_sheet.Rows[0][in_langIndex].CellValueString);

            for (var i = 1; i < in_sheet.Rows.Count - 1; ++i)
            {
                var row = in_sheet.Rows[i];
                if (string.IsNullOrEmpty(row.Cells[0].CellValueString) && in_options.NGUICullRows)
                {
                    break;
                }

                var tmpRet = in_options.EscapeNGUIStrings
                    ? SanitizeDf(row.Cells[in_langIndex].CellValueString)
                    : row.Cells[in_langIndex].CellValueString;

                if (in_options.NGUIConvertLineBreaks)
                {
                    tmpRet = ConvertLineBreaks(tmpRet);
                }

                ret += FormatLine(row.Cells[0].CellValueString + " = " + tmpRet);
            }
            return(ret);
        }
        public static string ExportCsvString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
        {
            // for each page
            var ret   = string.Empty;
            var rowCt = in_sheet.Rows.Count;

            if (rowCt <= 0)
            {
                return(ret);
            }
            // Iterate through each row, printing its cell values.
            foreach (var row in in_sheet.Rows)
            {
                var rowType   = row[0].GetTypeFromValue();
                var rowHeader = row[0].CellValueString;
                if (string.IsNullOrEmpty(rowHeader))
                // if this header is empty
                {
                    if (in_options.CSVCullRows)
                    {
                        break;
                    }
                    continue;
                }

                if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                // if this cell is void, then skip the row completely
                {
                    continue;
                }

                // Iterate over the remaining columns, and print each cell value
                for (var i = 0; i < in_sheet.Rows[0].Count; i++)
                {
                    if ((row[i].MyType == SupportedType.Void ||
                         string.IsNullOrEmpty(rowHeader) ||
                         (in_options.CSVCullColumns && i > in_sheet.FirstBlankCol)))
                    {
                        continue;
                    }

                    var tmpRet = in_options.EscapeCSVStrings
                        ? SanitizeDf(row[i].CellValueString)
                        : AutoQuote(row[i].CellValueString);

                    if (in_options.CSVConvertLineBreaks)
                    {
                        tmpRet = ConvertLineBreaks(tmpRet);
                    }

                    ret += tmpRet;

                    ret += ",";
                }
                ret  = ret.Remove(ret.Length - 1); // remove the last comma
                ret += Environment.NewLine;
            }
            return(ret);
        }
        public static void ExportXML(Google2uWorksheet in_sheet, string in_path, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
                Directory.CreateDirectory(in_path);

            in_path = Path.Combine(in_path, in_sheet.WorksheetName);

            if (!Directory.Exists(in_path))
                Directory.CreateDirectory(in_path);

            in_path = Path.Combine(in_path, in_sheet.WorksheetName + ".xml").Replace('\\', '/');

            using (
                var fs = File.Open(in_path,
                    File.Exists(in_path) ? FileMode.Truncate : FileMode.OpenOrCreate,
                    FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {
                    var fileString = ExportXMLString(in_sheet, in_options);
                    sw.Write(fileString);
                    sw.Flush();
                }
            }

            PushNotification("Saving to: " + in_path);
        }
        public static void ExportCsv(Google2uWorksheet in_sheet, string in_path, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
            {
                Directory.CreateDirectory(in_path);
            }

            in_path = Path.Combine(in_path, in_sheet.WorksheetName);

            if (!Directory.Exists(in_path))
            {
                Directory.CreateDirectory(in_path);
            }

            in_path = Path.Combine(in_path, in_sheet.WorksheetName + ".csv").Replace('\\', '/');

            using (
                var fs = File.Open(in_path,
                                   File.Exists(in_path) ? FileMode.Truncate : FileMode.OpenOrCreate,
                                   FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {
                    var fileString = ExportCsvString(in_sheet, in_options);
                    sw.Write(fileString);
                    sw.Flush();
                }
            }

            PushNotification("Saving to: " + in_path);
        }
Beispiel #5
0
        public static void ExportJson(Google2uWorksheet in_sheet, string in_path, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
            {
                Directory.CreateDirectory(in_path);
            }

            if (!in_options.JSONExportSingleSubfolder)
            {
                in_path = Path.Combine(in_path, in_sheet.WorksheetName);

                if (!Directory.Exists(in_path))
                {
                    Directory.CreateDirectory(in_path);
                }
            }

            var jsonPath = Path.Combine(in_path, in_sheet.WorksheetName + ".json").Replace('\\', '/');

            using (
                var fs = File.Open(jsonPath,
                                   File.Exists(jsonPath) ? FileMode.Truncate : FileMode.OpenOrCreate,
                                   FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {
                    var fileString = ExportJsonObjectString(in_sheet, in_options, false);
                    sw.Write(fileString);
                    sw.Flush();
                }
            }

            if (in_options.JSONExportClass)
            {
                var jsonClassDir = in_path + "\\Resources";
                if (!Directory.Exists(jsonClassDir))
                {
                    Directory.CreateDirectory(jsonClassDir);
                }

                var jsonClassPath = Path.Combine(jsonClassDir, in_sheet.WorksheetName + ".cs").Replace('\\', '/');

                using (
                    var fs = File.Open(jsonClassPath,
                                       File.Exists(jsonClassPath) ? FileMode.Truncate : FileMode.OpenOrCreate,
                                       FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        var fileString = ExportJsonObjectClassString(in_sheet, in_options);
                        sw.Write(fileString);
                        sw.Flush();
                    }
                }
            }

            PushNotification("Saving to: " + in_path);
        }
Beispiel #6
0
        public static string ExportNGUIString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
        {
            // for each page
            var ret = string.Empty;
            var rowCt = in_sheet.Rows.Count;
            if (rowCt <= 0) return ret;
            // Iterate through each row, printing its cell values.
            foreach (var row in in_sheet.Rows)
            {
                var rowType = row[0].GetTypeFromValue();
                var rowHeader = row[0].CellValueString;
                if (string.IsNullOrEmpty(rowHeader))
                    // if this header is empty
                {
                    if (in_options.NGUICullRows)
                        break;
                    continue;
                }

                if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                    // if this cell is void, then skip the row completely
                {
                    continue;
                }

                // Iterate over the remaining columns, and print each cell value
                for (var i = 0; i < in_sheet.Rows[0].Count; i++)
                {
                    if ((row[i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(row[0].CellValueString) ||
                             in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(in_sheet.Rows[0][i].CellValueString) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("void", StringComparison.InvariantCultureIgnoreCase) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("ignore", StringComparison.InvariantCultureIgnoreCase) ||
                             (in_options.NGUICullColumns && i >= in_sheet.FirstBlankCol)))
                    {
                        continue;
                    }

                    var tmpRet = in_options.EscapeNGUIStrings
                        ? SanitizeDf(row[i].CellValueString)
                        : AutoQuote(row[i].CellValueString);

                    if (in_options.NGUIConvertLineBreaks)
                        tmpRet = ConvertLineBreaks(tmpRet);


                    ret += tmpRet;

                    ret += ",";
                }
                ret = ret.Remove(ret.Length - 1); // remove the last comma
                ret += Environment.NewLine;
            }
            return ret;
        }
Beispiel #7
0
        public static void ExportNGUILegacy(Google2uWorksheet in_sheet, string in_path, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
            {
                Directory.CreateDirectory(in_path);
            }

            var finalCol = in_sheet.Rows[0].Count;

            if (in_options.NGUICullColumns)
            {
                finalCol = in_sheet.FirstBlankCol;
            }

            var languages = new List <string>();

            for (var j = 1; j < in_sheet.Rows[0].Count - 1; ++j)
            {
                if (j == finalCol)
                {
                    break;
                }
                languages.Add(in_sheet.Rows[0][j].CellValueString);
            }

            foreach (var lang in languages)
            {
                var filepath = in_path + "/" + lang + ".txt";


                using (
                    var fs = File.Open(filepath,
                                       File.Exists(filepath) ? FileMode.Truncate : FileMode.OpenOrCreate,
                                       FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        var langIndex = 0;
                        for (var index = 0; index < in_sheet.Rows[0].Cells.Count; index++)
                        {
                            var cell = in_sheet.Rows[0].Cells[index];
                            if (cell.CellValueString.Equals(lang))
                            {
                                langIndex = index;
                                break;
                            }
                        }
                        sw.Write(ExportNGUILegacyString(in_sheet, in_options, langIndex));
                        sw.Flush();
                    }
                }
            }
        }
        public void QueryWorksheets(object in_workbook)
        {
            var myWorkbook = in_workbook as Google2uManualWorkbook;
            if (myWorkbook == null) return;

            myWorkbook.Worksheets.Clear();
            foreach (var entry in myWorkbook.Workbook.Entries)
            {
                var ws = new Google2uWorksheet(entry as WorksheetEntry, _Service, this);
                myWorkbook.Worksheets.Add(ws);
                if (myWorkbook.ActiveWorksheetIndex == -1)
                    myWorkbook.ActiveWorksheetIndex = 0;
            }
            myWorkbook.WorksheetQueryStatus = QueryStatus.QueryComplete;
        }
        public static void ExportNGUILegacy(Google2uWorksheet in_sheet, string in_path, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
                Directory.CreateDirectory(in_path);

            var finalCol = in_sheet.Rows[0].Count;
            if (in_options.NGUICullColumns)
                finalCol = in_sheet.FirstBlankCol;

            var languages = new List<string>();
            for (var j = 1; j < in_sheet.Rows[0].Count - 1; ++j)
            {
                if (j == finalCol)
                    break;
                languages.Add(in_sheet.Rows[0][j].CellValueString);
            }

            foreach (var lang in languages)
            {
                var filepath = in_path + "/" + lang + ".txt";

                using (
                    var fs = File.Open(filepath,
                        File.Exists(filepath) ? FileMode.Truncate : FileMode.OpenOrCreate,
                        FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        var langIndex = 0;
                        for (var index = 0; index < in_sheet.Rows[0].Cells.Count; index++)
                        {
                            var cell = in_sheet.Rows[0].Cells[index];
                            if (cell.CellValueString.Equals(lang))
                            {
                                langIndex = index;
                                break;
                            }
                        }
                        sw.Write(ExportNGUILegacyString(in_sheet, in_options, langIndex));
                        sw.Flush();
                    }
                }
            }
        }
Beispiel #10
0
        public static void CalculateColumnWidth(int in_col, Google2uWorksheet in_worksheet)
        {
            var longest       = 0;
            var longestString = string.Empty;

            foreach (var row in in_worksheet.RowsDisplay)
            {
                var cell = row[in_col];
                var len  = cell.CellValueLength;
                if (len <= longest)
                {
                    continue;
                }

                longest       = len;
                longestString = cell.CellValueString;
            }
            var strlen = GUIStyle.none.CalcSize(new GUIContent(longestString));

            in_worksheet.ColOptions[in_col].Width = Math.Max(26, (int)Math.Round(strlen.x + 0.5f) + 16);
        }
Beispiel #11
0
        public void QueryWorksheets(object in_workbook)
        {
            var myWorkbook = in_workbook as Google2uManualWorkbook;

            if (myWorkbook == null)
            {
                return;
            }

            myWorkbook.Worksheets.Clear();
            foreach (var entry in myWorkbook.Workbook.Entries)
            {
                var ws = new Google2uWorksheet(entry as WorksheetEntry, _Service, this);
                myWorkbook.Worksheets.Add(ws);
                if (myWorkbook.ActiveWorksheetIndex == -1)
                {
                    myWorkbook.ActiveWorksheetIndex = 0;
                }
            }
            myWorkbook.WorksheetQueryStatus = QueryStatus.QueryComplete;
        }
Beispiel #12
0
        public static string ExportNGUILegacyString(Google2uWorksheet in_sheet, Google2uExportOptions in_options,
            int in_langIndex)
        {
            var ret = FormatLine("Flag = Flag-" + in_sheet.Rows[0][in_langIndex].CellValueString);
            for (var i = 1; i < in_sheet.Rows.Count - 1; ++i)
            {
                var row = in_sheet.Rows[i];
                if (string.IsNullOrEmpty(row.Cells[0].CellValueString) && in_options.NGUICullRows)
                    break;

                var tmpRet = in_options.EscapeNGUIStrings
                    ? SanitizeDf(row.Cells[in_langIndex].CellValueString)
                    : row.Cells[in_langIndex].CellValueString;

                if (in_options.NGUIConvertLineBreaks)
                    tmpRet = ConvertLineBreaks(tmpRet);

                ret += FormatLine(row.Cells[0].CellValueString + " = " + tmpRet);
            }
            return ret;
        }
        public static void ExportStaticDB(Google2uWorksheet in_sheet, string in_path, string in_fileName, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
                Directory.CreateDirectory(in_path);

            var className = Path.GetInvalidFileNameChars().Aggregate(in_sheet.WorksheetName, (in_current, in_c) => in_current.Replace(in_c, '_'));

            var arrayDelimiter = in_options.DelimiterOptions[in_options.ArrayDelimiters];
            var stringArrayDelimiter = in_options.DelimiterOptions[in_options.StringArrayDelimiters];
            var complexTypeDelimiter = in_options.DelimiterOptions[in_options.ComplexTypeDelimiters];
            var complexTypeArrayDelimiters = in_options.DelimiterOptions[in_options.ComplexArrayDelimiters];

            var typesInFirstRow = in_sheet.UseTypeRow;


            ///////////////////////////////////////////////
            // open the file 

            using (var fs = File.Open(Path.Combine(in_path, className + ".cs"), FileMode.Create, FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {

                    ////////////////////////////////////////
                    // writing out the class
                    var fileString = System.String.Empty;

                    fileString += FormatLine("//----------------------------------------------");
                    fileString += FormatLine("//    Google2u: Google Doc Unity integration");
                    fileString += FormatLine("//         Copyright © 2015 Litteratus");
                    fileString += FormatLine("//");
                    fileString += FormatLine("//        This file has been auto-generated");
                    fileString += FormatLine("//              Do not manually edit");
                    fileString += FormatLine("//----------------------------------------------");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("using UnityEngine;");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("namespace Google2u");
                    fileString += FormatLine("{");
                    fileString += FormatLine("	[System.Serializable]");
                    fileString += FormatLine("	public class " + className + "Row : IGoogle2uRow");
                    fileString += FormatLine("	{");

                    // variable declarations
                    for (int i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        var rowType = in_sheet.Rows[0][i].MyType;
                        var rowHeader = in_sheet.Rows[0][i].CellValueString;

                        if (rowType == SupportedType.Void ||
                            string.IsNullOrEmpty(MakeValidVariableName(rowHeader, in_options.LowercaseHeader)) ||
                            (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol)) 
                        { 
                            continue;
                        }

                        if (IsSupportedArrayType(rowType))
                            fileString += FormatLine("		public System.Collections.Generic.List<" + StringSupportedType(rowType) + "> " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = new System.Collections.Generic.List<" + StringSupportedType(rowType) + ">();");
                        else
                            fileString += FormatLine("		public " + StringSupportedType(rowType) + " " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ";");
                    }

                    // constructor parameter list
                    fileString += ("		public " + className + "Row(");
                    {
                        var firstItem = true;
                        for (var i = 0; i < in_sheet.Rows[0].Count; i++)
                        {
                            var rowType = in_sheet.Rows[0][i].MyType;
                            var rowHeader = in_sheet.Rows[0][i].CellValueString;

                            if (rowType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(rowHeader, in_options.LowercaseHeader)) ||
                                (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;

                            if (!firstItem)
                                fileString += (", ");
                            firstItem = false;
                            fileString += ("string _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader));
                        }
                    }
                    fileString += FormatLine(") " + System.Environment.NewLine + "		{");


                    // processing each of the input parameters and copying it into the members
                    for (int i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        var rowType = in_sheet.Rows[0][i].MyType;
                        var rowHeader = in_sheet.Rows[0][i].CellValueString;

                        //nightmare time
                        if (rowType == SupportedType.Void ||
                            string.IsNullOrEmpty(MakeValidVariableName(rowHeader, in_options.LowercaseHeader)) ||
                            (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol))
                        {
                            continue;
                        }

                        if (rowType == SupportedType.GameObject)
                        {
                            fileString += FormatLine("			" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = GameObject.Find(\"" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                        }
                        else if (rowType == SupportedType.Bool)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(rowType) + " res;");
                            fileString += FormatLine("				if(" + StringSupportedType(rowType) + ".TryParse(_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ", out res))");
                            fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " string: \"+ _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " +\" to bool\");");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Byte)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(rowType) + " res;");
                            fileString += FormatLine("				if(" + StringSupportedType(rowType) + ".TryParse(_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ", out res))");
                            fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " string: \"+ _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " +\" to byte\");");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Float)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(rowType) + " res;");
                            fileString += FormatLine("				if(" + StringSupportedType(rowType) + ".TryParse(_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ", out res))");
                            fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " string: \"+ _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " +\" to " + StringSupportedType(rowType) + "\");");
                            fileString += FormatLine("			}");
                        }
                        else if ((rowType == SupportedType.ByteArray)
                                    || (rowType == SupportedType.BoolArray)
                                    || (rowType == SupportedType.FloatArray))
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("				" + StringSupportedType(rowType) + " res;");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" + arrayDelimiter +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					if(" + StringSupportedType(rowType) + ".TryParse(result[i], out res))");
                            fileString += FormatLine("						" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add(res);");
                            fileString += FormatLine("					else");
                            fileString += FormatLine("					{");
                            if (rowType == SupportedType.ByteArray)
                                fileString += FormatLine("						" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( 0 );");
                            else if (rowType == SupportedType.BoolArray)
                                fileString += FormatLine("						" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( false );");
                            else if (rowType == SupportedType.FloatArray)
                                fileString += FormatLine("						" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( float.NaN );");
                            fileString +=
                                FormatLine("						Debug.LogError(\"Failed To Convert " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) +
                                           " string: \"+ result[i] +\" to " + (StringSupportedType(rowType)) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Int)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(rowType) + " res;");
                            fileString += FormatLine("				if(int.TryParse(_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ", out res))");
                            fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " string: \"+ _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " +\" to int\");");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.IntArray)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("				" + (StringSupportedType(rowType)) + " res;");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" + arrayDelimiter +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					if(int.TryParse(result[i], out res))");
                            fileString += FormatLine("						" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( res );");
                            fileString += FormatLine("					else");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( 0 );");
                            fileString +=
                                FormatLine("						Debug.LogError(\"Failed To Convert " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) +
                                           " string: \"+ result[i] +\" to " + (StringSupportedType(rowType)) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.String)
                        {
                            if (in_options.TrimStrings)
                                fileString += FormatLine("			" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Trim();");
                            else
                                fileString += FormatLine("			" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ";");
                        }
                        else if (rowType == SupportedType.StringArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" + stringArrayDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");
                            if (in_options.TrimStringArrays)
                                fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( result[i].Trim() );");
                            else
                                fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( result[i] );");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Vector2)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 2)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) + " in \" + _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < 2; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString += FormatLine("					if(float.TryParse(splitpath[i], out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".x = results[0];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".y = results[1];");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Vector2Array)
                        {
                            fileString += FormatLine("			{");

                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("                  {");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 2)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) +
                                           " in \" + _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString += FormatLine("      					if(float.TryParse(splitpath[j], out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString +=
                                FormatLine("		        		" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1] ));");
                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Vector3)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 3)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) + " in \" + _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < 3; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString += FormatLine("					if(float.TryParse(splitpath[i], out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".x = results[0];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".y = results[1];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".z = results[2];");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Vector3Array)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) +
                                           " in \" + _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString += FormatLine("      					if(float.TryParse(splitpath[j], out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString +=
                                FormatLine("		        	" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1], results[2] ));");

                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Color)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) + " in \" + _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < splitpath.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString += FormatLine("					if(float.TryParse(splitpath[i], out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".r = results[0];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".g = results[1];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".b = results[2];");
                            fileString += FormatLine("				if(splitpath.Length == 4)");
                            fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".a = results[3];");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.ColorArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) +
                                           " in \" + _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString += FormatLine("      					if(float.TryParse(splitpath[j], out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString += FormatLine("		        		if(splitpath.Length == 3)");
                            fileString +=
                                FormatLine("		        		" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1], results[2] ));");
                            fileString += FormatLine("		        		else");
                            fileString +=
                                FormatLine("		        		" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1], results[2], results[3] ));");

                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Color32)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) + " in \" + _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				byte []results = new byte[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < splitpath.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					byte res;");
                            fileString += FormatLine("					if(byte.TryParse(splitpath[i], out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".r = results[0];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".g = results[1];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".b = results[2];");
                            fileString += FormatLine("				if(splitpath.Length == 4)");
                            fileString += FormatLine("					" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".a = results[3];");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Color32Array)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) +
                                           " in \" + _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("      				byte []results = new byte[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            byte [] temp = new byte[splitpath.Length];");
                            fileString += FormatLine("      					if(byte.TryParse(splitpath[j], out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString += FormatLine("		        		if(splitpath.Length == 3)");
                            fileString +=
                                FormatLine("		        		    " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1], results[2], System.Convert.ToByte(0) ));");
                            fileString += FormatLine("		        		else");
                            fileString +=
                                FormatLine("		        		    " + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1], results[2], results[3] ));");

                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.Quaternion)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 4)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) + " in \" + _" +
                                           MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < 4; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString += FormatLine("					if(float.TryParse(splitpath[i], out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".x = results[0];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".y = results[1];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".z = results[2];");
                            fileString += FormatLine("				" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".w = results[3];");
                            fileString += FormatLine("			}");
                        }
                        else if (rowType == SupportedType.QuaternionArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " + StringSupportedType(rowType) +
                                           " in \" + _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString += FormatLine("      					if(float.TryParse(splitpath[j], out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString +=
                                FormatLine("		        		" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ".Add( new " + (StringSupportedType(rowType)) +
                                           "(results[0], results[1], results[2], results[3] ));");
                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else
                        {
                            fileString += FormatLine("			" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + " = _" + MakeValidVariableName(rowHeader, in_options.LowercaseHeader) + ";");
                        }
                    }
                    fileString += FormatLine("		}");

                    fileString += FormatLine(System.String.Empty);
                    {

                        int colCount = 0;

                        for (int i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader)) ||
                                (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;
                            colCount++;
                        }
                        fileString += FormatLine("		public int Length { get { return " + colCount + "; } }");
                    }
                    fileString += FormatLine(System.String.Empty);

                    // allow indexing by []
                    fileString += FormatLine("		public string this[int i]");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("		    get");
                    fileString += FormatLine("		    {");
                    fileString += FormatLine("		        return GetStringDataByIndex(i);");
                    fileString += FormatLine("		    }");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(System.String.Empty);
                    // get string data by index lets the user use an int field rather than the name to retrieve the data
                    fileString += FormatLine("		public string GetStringDataByIndex( int index )");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			string ret = System.String.Empty;");
                    fileString += FormatLine("			switch( index )");
                    fileString += FormatLine("			{");
                    {
                        var colNum = 0;
                        for (int i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader)) ||
                                (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;
                            fileString += FormatLine("				case " + colNum++ + ":");
                            fileString += FormatLine("					ret = " + MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader) + ".ToString();");
                            fileString += FormatLine("					break;");
                        }
                    }
                    fileString += FormatLine("			}");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(System.String.Empty);

                    // get the data by column name rather than index
                    fileString += FormatLine("		public string GetStringData( string colID )");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			var ret = System.String.Empty;");
                    if (in_options.LowercaseHeader)
                        fileString += FormatLine("			switch( colID.ToLower() )");
                    else
                        fileString += FormatLine("			switch( colID )");
                    fileString += FormatLine("			{");

                    for (int i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader)) ||
                                (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol))
                            continue;
                        fileString += FormatLine("				case \"" + (in_sheet.Rows[0][i].CellValueString) + "\":");
                        fileString += FormatLine("					ret = " + MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader) + ".ToString();");
                        fileString += FormatLine("					break;");
                    }

                    fileString += FormatLine("			}");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("		public override string ToString()");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			string ret = System.String.Empty;");
                    for (int i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader)) ||
                                (in_options.StaticDBCullColumns && i > in_sheet.FirstBlankCol))
                            continue;
                        fileString += FormatLine("			ret += \"{\" + \"" + (in_sheet.Rows[0][i].CellValueString) + "\" + \" : \" + " + MakeValidVariableName(in_sheet.Rows[0][i].CellValueString, in_options.LowercaseHeader) + ".ToString() + \"} \";");
                    }
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("	}");



                    ///////////////////////////////////////////////////////////////////////////////
                    // the database class itself, this contains the rows defined above
                    fileString += FormatLine("	public sealed class " + className + " : IGoogle2uDB");
                    fileString += FormatLine("	{");


                    // this is the enums, the enum matches the name of the row
                    fileString += FormatLine("		public enum rowIds {");
                    fileString += ("			");

                    {
                        int curRow = 0;
                        // Iterate through each row, printing its cell values to be the enum names.
                        foreach (var row in in_sheet.Rows)
                        {
                            if (curRow == 0 || (in_sheet.UseTypeRow && curRow == 1))
                            {
                                curRow++;
                                continue;
                            }

                            var rowType = row[0].MyType;
                            var rowHeader = row[0].CellValueString;
                            if (string.IsNullOrEmpty(rowHeader))
                            // if this header is empty
                            {
                                if (in_options.StaticDBCullRows)
                                    break;
                                continue;
                            }

                            if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                            // if this cell is void, then skip the row completely
                            {
                                continue;
                            }

                            fileString += rowHeader;
                            if ((curRow + 1) % 20 == 0)
                                fileString += System.Environment.NewLine + "			";
                            fileString += (", ");
                            curRow++;
                        }
                    }
                    fileString = fileString.Remove(fileString.Length - 2); // remove the last comma

                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("		};");



                    fileString += FormatLine("		public string [] rowNames = {");
                    fileString += "			";
                    // Iterate through each row, printing its cell values for the row names strings.
                    {
                        int curRow = 0;
                        foreach (var row in in_sheet.Rows)
                        {
                            if (curRow == 0 || (in_sheet.UseTypeRow && curRow == 1))
                            {
                                curRow++;
                                continue;
                            }

                            var rowType = row[0].MyType;
                            var rowHeader = row[0].CellValueString;
                            if (string.IsNullOrEmpty(rowHeader))
                            // if this header is empty
                            {
                                if (in_options.StaticDBCullRows)
                                    break;
                                curRow++;
                                continue;
                            }

                            if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                            // if this cell is void, then skip the row completely
                            {
                                curRow++;
                                continue;
                            }

                            fileString += "\"" + rowHeader + "\"";
                            if ((curRow + 1) % 20 == 0)
                                fileString += System.Environment.NewLine + "			";
                            fileString += ", ";
                            curRow++;
                        }
                    }
                    fileString = fileString.Remove(fileString.Length - 2); // remove the last comma
                    fileString += FormatLine(System.Environment.NewLine + "		};");
                    // the declaration of the storage for the row data
                    fileString += FormatLine("		public System.Collections.Generic.List<" + className + "Row> Rows = new System.Collections.Generic.List<" + className + "Row>();");

                    // declare the instance as well as the get functionality
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("		public static " + className + " Instance");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			get { return Nested" + className + ".instance; }");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("		private class Nested" + className + "");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			static Nested" + className + "() { }");
                    fileString += FormatLine("			internal static readonly " + className + " instance = new " + className + "();");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("		private " + className + "()");
                    fileString += FormatLine("		{");

                    var rowCt = 0;
                    // Iterate through each row, printing its cell values.

                    for (int i = 0; i < in_sheet.Rows.Count; i++)
                    {
                        // skip the first row. This is the title row, and we can get the values later
                        if (rowCt == 0 || (typesInFirstRow && rowCt == 1))
                        {
                            rowCt++;
                            continue;
                        }

                        var rowType = in_sheet.Rows[i][0].MyType;
                        var rowHeader = in_sheet.Rows[i][0].CellValueString;
                        if (string.IsNullOrEmpty(rowHeader))
                        // if this header is empty
                        {
                            if (in_options.StaticDBCullRows)
                                break;
                            rowCt++;
                            continue;
                        }

                        if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                        // if this cell is void, then skip the row completely
                        {
                            rowCt++;
                            continue;
                        }

                        // Iterate over the remaining columns, and print each cell value

                        fileString += "			Rows.Add( new " + className + "Row(";

                        for (int j = 0; j < in_sheet.Rows[0].Count; j++)
                        {
                            if ((j != 0) && 
                                (in_sheet.Rows[i][j].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][j].CellValueString, in_options.LowercaseHeader)) ||
                                (in_options.StaticDBCullColumns && j > in_sheet.FirstBlankCol)))
                            {
                                continue;
                            }

                            fileString += ToLiteral(in_sheet.Rows[i][j].CellValueString) + ", ";
                        }
                        fileString = fileString.Remove(fileString.Length - 2); // remove the last comma
                        fileString += FormatLine("));");

                        rowCt++;
                    }
                    fileString += FormatLine("		}");


                    fileString += FormatLine("		public IGoogle2uRow GetGenRow(string in_RowString)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			IGoogle2uRow ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)System.Enum.Parse(typeof(rowIds), in_RowString)];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch(System.ArgumentException) {");
                    fileString += FormatLine("				Debug.LogError( in_RowString + \" is not a member of the rowIds enumeration.\");");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("		public IGoogle2uRow GetGenRow(rowIds in_RowID)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			IGoogle2uRow ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)in_RowID];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch( System.Collections.Generic.KeyNotFoundException ex )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Debug.LogError( in_RowID + \" not found: \" + ex.Message );");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("		public " + className + "Row GetRow(rowIds in_RowID)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			" + className + "Row ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)in_RowID];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch( System.Collections.Generic.KeyNotFoundException ex )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Debug.LogError( in_RowID + \" not found: \" + ex.Message );");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");


                    fileString += FormatLine("		public " + className + "Row GetRow(string in_RowString)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			" + className + "Row ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)System.Enum.Parse(typeof(rowIds), in_RowString)];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch(System.ArgumentException) {");
                    fileString += FormatLine("				Debug.LogError( in_RowString + \" is not a member of the rowIds enumeration.\");");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("	}");
                    fileString += FormatLine(System.String.Empty);
                    fileString += FormatLine("}");

                    sw.Write(fileString);

                    ///////////////////////////////////
                    // done writing, clean up
                    sw.Flush();
    
                } // Using streamwriter

            } // Using FileSystem

            PushNotification("Saving to: " + in_path);
        }
Beispiel #14
0
 public DataValidationParams(Google2uWorksheet in_worksheet, Google2uExportOptions in_options)
 {
     Worksheet = in_worksheet;
     Options   = in_options;
 }
Beispiel #15
0
        public static void ExportObjectDb(Google2uWorksheet in_sheet, string in_resourcesPath, string in_editorPath,
            string in_playmakerPath, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_resourcesPath))
                Directory.CreateDirectory(in_resourcesPath);

            if (!Directory.Exists(in_editorPath))
                Directory.CreateDirectory(in_editorPath);


            var arrayDelimiter = in_options.DelimiterOptions[in_options.ArrayDelimiters];
            var stringArrayDelimiter = in_options.DelimiterOptions[in_options.StringArrayDelimiters];
            var complexTypeDelimiter = in_options.DelimiterOptions[in_options.ComplexTypeDelimiters];
            var complexTypeArrayDelimiters = in_options.DelimiterOptions[in_options.ComplexArrayDelimiters];

            var typesInFirstRow = in_sheet.UseTypeRow;

            ///////////////////////////////////////////////
            // open the file 
            var className = Path.GetInvalidFileNameChars()
                .Aggregate(in_sheet.WorksheetName, (in_current, in_c) => in_current.Replace(in_c, '_'));

            var exportInfo = new Google2uObjDbExport {Data = in_sheet, CullEmptyRows = in_options.ObjectDBCullRows, CullEmptyCols = in_options.ObjectDBCullColumns};

            var overrideName = in_options.GetOverrideObjectDatabaseGameObjectName(in_sheet.WorksheetName);

            exportInfo.ObjectName = string.IsNullOrEmpty(overrideName)
                ? (string.IsNullOrEmpty(in_options.ExportDatabaseGameObjectName)
                    ? "Google2uDatabase"
                    : in_options.ExportDatabaseGameObjectName)
                : overrideName;

            exportInfo.ScriptName = className;

            using (var fs = File.Open(Path.Combine(in_resourcesPath, className + ".cs"),
                File.Exists(Path.Combine(in_resourcesPath, className + ".cs"))
                    ? FileMode.Truncate
                    : FileMode.OpenOrCreate,
                FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {
                    var fileString = string.Empty;

                    fileString += FormatLine("//----------------------------------------------");
                    fileString += FormatLine("//    Google2u: Google Doc Unity integration");
                    fileString += FormatLine("//         Copyright © 2015 Litteratus");
                    fileString += FormatLine("//");
                    fileString += FormatLine("//        This file has been auto-generated");
                    fileString += FormatLine("//              Do not manually edit");
                    fileString += FormatLine("//----------------------------------------------");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("using UnityEngine;");
                    fileString += FormatLine("using System.Globalization;");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("namespace Google2u");
                    fileString += FormatLine("{");
                    fileString += FormatLine("	[System.Serializable]");
                    fileString += FormatLine("	public class " + className + "Row : IGoogle2uRow");
                    fileString += FormatLine("	{");

                    // variable declarations
                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                            string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader)) ||
                            (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                        {
                        }
                        else if (IsSupportedArrayType(in_sheet.Rows[0][i].MyType))
                        {
                            fileString +=
                                FormatLine("		public System.Collections.Generic.List<" +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + "> " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " = new System.Collections.Generic.List<" +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + ">();");
                        }
                        else
                            fileString +=
                                FormatLine("		public " + StringSupportedType(in_sheet.Rows[0][i].MyType) + " " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ";");
                    }

                    // constructor parameter list
                    fileString += ("		public " + className + "Row(");
                    {
                        var firstItem = true;
                        for (var i = 0; i < in_sheet.Rows[0].Count; i++)
                        {
                            if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                    in_options.LowercaseHeader)) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;

                            if (!firstItem)
                                fileString += (", ");
                            firstItem = false;
                            fileString += ("string _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader));
                        }
                    }
                    fileString += FormatLine(") " + Environment.NewLine + "		{");

                    // processing each of the input parameters and copying it into the members
                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        //nightmare time
                        if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                            string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader)) ||
                            (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                        {
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.GameObject)
                        {
                            fileString +=
                                FormatLine("			" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " = GameObject.Find(\"" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + "\");");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Bool)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(in_sheet.Rows[0][i].MyType) + " res;");
                            fileString +=
                                FormatLine("				if(" + StringSupportedType(in_sheet.Rows[0][i].MyType) + ".TryParse(_" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ", out res))");
                            fileString +=
                                FormatLine("					" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " string: \"+ _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " +\" to bool\");");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Byte)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(in_sheet.Rows[0][i].MyType) + " res;");
                            fileString +=
                                FormatLine("				if(" + StringSupportedType(in_sheet.Rows[0][i].MyType) + ".TryParse(_" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ", NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString +=
                                FormatLine("					" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " string: \"+ _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " +\" to byte\");");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Float)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(in_sheet.Rows[0][i].MyType) + " res;");
                            fileString +=
                                FormatLine("				if(" + StringSupportedType(in_sheet.Rows[0][i].MyType) + ".TryParse(_" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ", NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString +=
                                FormatLine("					" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " string: \"+ _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " +\" to " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + "\");");
                            fileString += FormatLine("			}");
                        }
                        else if ((in_sheet.Rows[0][i].MyType == SupportedType.ByteArray)
                                 || (in_sheet.Rows[0][i].MyType == SupportedType.BoolArray)
                                 || (in_sheet.Rows[0][i].MyType == SupportedType.FloatArray))
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("				" + StringSupportedType(in_sheet.Rows[0][i].MyType) + " res;");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           arrayDelimiter +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");
                            if (in_sheet.Rows[0][i].MyType == SupportedType.BoolArray)
                                fileString +=
                                    FormatLine("					if(" + StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                               ".TryParse(result[i], out res))");
                            else
                                fileString +=
                                    FormatLine("					if(" + StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                               ".TryParse(result[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");

                            fileString +=
                                FormatLine("						" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add(res);");
                            fileString += FormatLine("					else");
                            fileString += FormatLine("					{");
                            if (in_sheet.Rows[0][i].MyType == SupportedType.ByteArray)
                                fileString +=
                                    FormatLine("						" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ".Add( 0 );");
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.BoolArray)
                                fileString +=
                                    FormatLine("						" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ".Add( false );");
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.FloatArray)
                                fileString +=
                                    FormatLine("						" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ".Add( float.NaN );");
                            fileString +=
                                FormatLine("						Debug.LogError(\"Failed To Convert " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " string: \"+ result[i] +\" to " +
                                           (StringSupportedType(in_sheet.Rows[0][i].MyType)) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Int)
                        {
                            fileString += FormatLine("			{");
                            fileString += FormatLine("			" + StringSupportedType(in_sheet.Rows[0][i].MyType) + " res;");
                            fileString +=
                                FormatLine("				if(int.TryParse(_" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ", NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString +=
                                FormatLine("					" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " = res;");
                            fileString += FormatLine("				else");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Failed To Convert " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " string: \"+ _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " +\" to int\");");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.IntArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				" + (StringSupportedType(in_sheet.Rows[0][i].MyType)) + " res;");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           arrayDelimiter +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString +=
                                FormatLine(
                                    "					if(int.TryParse(result[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString +=
                                FormatLine("						" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( res );");
                            fileString += FormatLine("					else");
                            fileString += FormatLine("					{");
                            fileString +=
                                FormatLine("						" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( 0 );");
                            fileString +=
                                FormatLine("						Debug.LogError(\"Failed To Convert " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " string: \"+ result[i] +\" to " +
                                           (StringSupportedType(in_sheet.Rows[0][i].MyType)) + "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.String)
                        {
                            if (in_options.TrimStrings)
                                fileString +=
                                    FormatLine("			" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               " = _" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ".Trim();");
                            else
                                fileString +=
                                    FormatLine("			" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               " = _" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ";");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.StringArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           stringArrayDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");
                            if (in_options.TrimStringArrays)
                                fileString +=
                                    FormatLine("					" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ".Add( result[i].Trim() );");
                            else
                                fileString +=
                                    FormatLine("					" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               ".Add( result[i] );");
                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector2)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 2)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < 2; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString +=
                                FormatLine(
                                    "					if(float.TryParse(splitpath[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".x = results[0];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".y = results[1];");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector2Array)
                        {
                            fileString += FormatLine("			{");

                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("                  {");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 2)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                           " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString +=
                                FormatLine(
                                    "      					if(float.TryParse(splitpath[j], NumberStyles.Any, CultureInfo.InvariantCulture, out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString +=
                                FormatLine("		        		" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( new " + (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1] ));");
                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector3)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 3)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < 3; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString +=
                                FormatLine(
                                    "					if(float.TryParse(splitpath[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".x = results[0];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".y = results[1];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".z = results[2];");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector3Array)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                           " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString +=
                                FormatLine(
                                    "      					if(float.TryParse(splitpath[j], NumberStyles.Any, CultureInfo.InvariantCulture, out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString +=
                                FormatLine("		        	" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( new " + (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1], results[2] ));");

                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Color)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < splitpath.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString +=
                                FormatLine(
                                    "					if(float.TryParse(splitpath[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".r = results[0];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".g = results[1];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".b = results[2];");
                            fileString += FormatLine("				if(splitpath.Length == 4)");
                            fileString +=
                                FormatLine("					" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".a = results[3];");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.ColorArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                           " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString +=
                                FormatLine(
                                    "      					if(float.TryParse(splitpath[j], NumberStyles.Any, CultureInfo.InvariantCulture, out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString += FormatLine("		        		if(splitpath.Length == 3)");
                            fileString +=
                                FormatLine("		        		" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( new " + (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1], results[2] ));");
                            fileString += FormatLine("		        		else");
                            fileString +=
                                FormatLine("		        		" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( new " + (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1], results[2], results[3] ));");

                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Color32)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				byte []results = new byte[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < splitpath.Length; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					byte res;");
                            fileString +=
                                FormatLine(
                                    "					if(byte.TryParse(splitpath[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".r = results[0];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".g = results[1];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".b = results[2];");
                            fileString += FormatLine("				if(splitpath.Length == 4)");
                            fileString +=
                                FormatLine("					" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".a = results[3];");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Color32Array)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                           " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " );");
                            fileString += FormatLine("      				byte []results = new byte[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            byte [] temp = new byte[splitpath.Length];");
                            fileString +=
                                FormatLine(
                                    "      					if(byte.TryParse(splitpath[j], NumberStyles.Any, CultureInfo.InvariantCulture, out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString += FormatLine("		        		if(splitpath.Length == 3)");
                            fileString +=
                                FormatLine("		        		    " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Add( new " +
                                           (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1], results[2], System.Convert.ToByte(0) ));");
                            fileString += FormatLine("		        		else");
                            fileString +=
                                FormatLine("		        		    " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Add( new " +
                                           (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1], results[2], results[3] ));");

                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.Quaternion)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string [] splitpath = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				if(splitpath.Length != 4)");
                            fileString +=
                                FormatLine("					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) + " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " );");
                            fileString += FormatLine("				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("				for(int i = 0; i < 4; i++)");
                            fileString += FormatLine("				{");
                            fileString += FormatLine("					float res;");
                            fileString +=
                                FormatLine(
                                    "					if(float.TryParse(splitpath[i], NumberStyles.Any, CultureInfo.InvariantCulture, out res))");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						results[i] = res;");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("					else ");
                            fileString += FormatLine("					{");
                            fileString += FormatLine("						Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("					}");
                            fileString += FormatLine("				}");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".x = results[0];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".y = results[1];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".z = results[2];");
                            fileString +=
                                FormatLine("				" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".w = results[3];");
                            fileString += FormatLine("			}");
                        }
                        else if (in_sheet.Rows[0][i].MyType == SupportedType.QuaternionArray)
                        {
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("				string []result = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Split(\"" +
                                           complexTypeArrayDelimiters +
                                           "\".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("				for(int i = 0; i < result.Length; i++)");
                            fileString += FormatLine("				{");

                            fileString += FormatLine("      			{");
                            fileString +=
                                FormatLine("      				string [] splitpath = result[i].Split(\"" + complexTypeDelimiter +
                                           "\".ToCharArray(),System.StringSplitOptions.RemoveEmptyEntries);");
                            fileString += FormatLine("      				if(splitpath.Length != 3 && splitpath.Length != 4)");
                            fileString +=
                                FormatLine("      					Debug.LogError(\"Incorrect number of parameters for " +
                                           StringSupportedType(in_sheet.Rows[0][i].MyType) +
                                           " in \" + _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           " );");
                            fileString += FormatLine("      				float []results = new float[splitpath.Length];");
                            fileString += FormatLine("      				for(int j = 0; j < splitpath.Length; j++)");
                            fileString += FormatLine("      				{");
                            fileString += FormatLine("				            float [] temp = new float[splitpath.Length];");
                            fileString +=
                                FormatLine(
                                    "      					if(float.TryParse(splitpath[j], NumberStyles.Any, CultureInfo.InvariantCulture, out temp[j]))");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("      						results[j] = temp[j];");
                            fileString += FormatLine("      					}");
                            fileString += FormatLine("      					else ");
                            fileString += FormatLine("      					{");
                            fileString += FormatLine("	        					Debug.LogError(\"Error parsing \" + "
                                                     + "_" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader)
                                                     +
                                                     " + \" Component: \" + splitpath[i] + \" parameter \" + i + \" of variable "
                                                     +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "\");");
                            fileString += FormatLine("		        			continue;");
                            fileString += FormatLine("		        		}");
                            fileString += FormatLine("		        	}");
                            fileString +=
                                FormatLine("		        		" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Add( new " + (StringSupportedType(in_sheet.Rows[0][i].MyType)) +
                                           "(results[0], results[1], results[2], results[3] ));");
                            fileString += FormatLine("		        	}");

                            fileString += FormatLine("				}");
                            fileString += FormatLine("			}");
                        }
                        else
                        {
                            fileString +=
                                FormatLine("			" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + " = _" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ";");
                        }
                    }
                    fileString += FormatLine("		}");

                    fileString += FormatLine(string.Empty);
                    {
                        var colCount = 0;

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                    in_options.LowercaseHeader)) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;
                            colCount++;
                        }
                        fileString += FormatLine("		public int Length { get { return " + colCount + "; } }");
                    }
                    fileString += FormatLine(string.Empty);

                    // allow indexing by []
                    fileString += FormatLine("		public string this[int i]");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("		    get");
                    fileString += FormatLine("		    {");
                    fileString += FormatLine("		        return GetStringDataByIndex(i);");
                    fileString += FormatLine("		    }");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(string.Empty);
                    // get string data by index lets the user use an int field rather than the name to retrieve the data
                    fileString += FormatLine("		public string GetStringDataByIndex( int index )");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			string ret = System.String.Empty;");
                    fileString += FormatLine("			switch( index )");
                    fileString += FormatLine("			{");
                    {
                        var colNum = 0;
                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                    in_options.LowercaseHeader)) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;
                            fileString += FormatLine("				case " + colNum++ + ":");
                            fileString +=
                                FormatLine("					ret = " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".ToString();");
                            fileString += FormatLine("					break;");
                        }
                    }
                    fileString += FormatLine("			}");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(string.Empty);

                    // get the data by column name rather than index
                    fileString += FormatLine("		public string GetStringData( string colID )");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			var ret = System.String.Empty;");

                    if (in_options.LowercaseHeader)
                        fileString += FormatLine("			switch( colID.ToLower() )");
                    else
                        fileString += FormatLine("			switch( colID )");
                    fileString += FormatLine("			{");

                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                            string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader)) ||
                            (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                            continue;
                        fileString +=
                            FormatLine("				case \"" +
                                       MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                           in_options.LowercaseHeader) + "\":");
                        fileString +=
                            FormatLine("					ret = " +
                                       MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                           in_options.LowercaseHeader) +
                                       ".ToString();");
                        fileString += FormatLine("					break;");
                    }

                    fileString += FormatLine("			}");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("		public override string ToString()");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			string ret = System.String.Empty;");
                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                            string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader)) ||
                            (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                            continue;
                        fileString +=
                            FormatLine("			ret += \"{\" + \"" +
                                       MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                           in_options.LowercaseHeader) +
                                       "\" + \" : \" + " +
                                       MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                           in_options.LowercaseHeader) +
                                       ".ToString() + \"} \";");
                    }
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("	}");

                    fileString +=
                        FormatLine("	public class " + className + " :  Google2uComponentBase, IGoogle2uDB");
                    fileString += FormatLine("	{");

                    // this is the enums, the enum matches the name of the row
                    fileString += FormatLine("		public enum rowIds {");
                    fileString += ("			");

                    {
                        var curRow = 0;
                        // Iterate through each row, printing its cell values to be the enum names.
                        foreach (var row in in_sheet.Rows)
                        {
                            if (curRow == 0 || (typesInFirstRow && curRow == 1))
                            {
                                curRow++;
                                continue;
                            }

                            var rowType = row[0].MyType;
                            var rowHeader = row[0].CellValueString;
                            if (string.IsNullOrEmpty(rowHeader))
                                // if this header is empty
                            {
                                if (in_options.ObjectDBCullRows)
                                    break;
                                curRow++;
                                continue;
                            }

                            if (rowType == SupportedType.Void ||
                                rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                                // if this cell is void, then skip the row completely
                            {
                                curRow++;
                                continue;
                            }

                            fileString += row[0].CellValueString;
                            if ((curRow + 1)%20 == 0)
                                fileString += Environment.NewLine + "			";
                            fileString += (", ");
                            curRow++;
                        }
                    }
                    fileString = fileString.Remove(fileString.Length - 2); // remove the last comma

                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("		};");


                    fileString += FormatLine("		public string [] rowNames = {");
                    fileString += "			";
                    // Iterate through each row, printing its cell values for the row names strings.
                    {
                        var curRow = 0;
                        foreach (var row in in_sheet.Rows)
                        {
                            if (curRow == 0 || (typesInFirstRow && curRow == 1))
                            {
                                curRow++;
                                continue;
                            }

                            var rowType = row[0].MyType;
                            var rowHeader = row[0].CellValueString;
                            if (string.IsNullOrEmpty(rowHeader))
                                // if this header is empty
                            {
                                if (in_options.ObjectDBCullRows)
                                    break;
                                curRow++;
                                continue;
                            }

                            if (rowType == SupportedType.Void ||
                                rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                                // if this cell is void, then skip the row completely
                            {
                                curRow++;
                                continue;
                            }

                            fileString += "\"" + row[0].CellValueString + "\"";
                            if ((curRow + 1)%20 == 0)
                                fileString += Environment.NewLine + "			";
                            fileString += ", ";
                            curRow++;
                        }
                    }
                    fileString = fileString.Remove(fileString.Length - 2); // remove the last comma
                    fileString += FormatLine(Environment.NewLine + "		};");
                    // the declaration of the storage for the row data
                    fileString +=
                        FormatLine("		public System.Collections.Generic.List<" + className +
                                   "Row> Rows = new System.Collections.Generic.List<" + className + "Row>();");


                    {
                        // the dont destroy on awake flag
                        if (in_options.UseDoNotDestroy)
                        {
                            fileString += FormatLine(string.Empty);
                            fileString += FormatLine("		void Awake()");
                            fileString += FormatLine("		{");
                            fileString += FormatLine("			DontDestroyOnLoad(this);");
                            fileString += FormatLine("		}");
                        }

                        // this is the processing that actually gets the data into the object itself later on, 
                        // this loops through the generic input and seperates it into strings for the above
                        // row class to handle and parse into its members
                        fileString +=
                            FormatLine(
                                "		public override void AddRowGeneric (System.Collections.Generic.List<string> input)");
                        fileString += FormatLine("		{");
                        fileString += ("			Rows.Add(new " + className + "Row(");
                        {
                            var typeCount = 1;
                            // variable declarations
                            for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                            {
                                if (in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                                    string.IsNullOrEmpty(MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                        in_options.LowercaseHeader)) ||
                                    (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                    continue;
                                typeCount++;
                            }
                            var firstItem = true;
                            for (var i = 0; i < typeCount; i++)
                            {
                                if (!firstItem)
                                    fileString += (",");
                                firstItem = false;
                                fileString += ("input[" + i + "]");
                            }
                        }
                        fileString += FormatLine("));");
                        fileString += FormatLine("		}");

                        fileString += FormatLine("		public override void Clear ()");
                        fileString += FormatLine("		{");
                        fileString += FormatLine("			Rows.Clear();");
                        fileString += FormatLine("		}");
                    }

                    fileString += FormatLine("		public IGoogle2uRow GetGenRow(string in_RowString)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			IGoogle2uRow ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)System.Enum.Parse(typeof(rowIds), in_RowString)];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch(System.ArgumentException) {");
                    fileString +=
                        FormatLine(
                            "				Debug.LogError( in_RowString + \" is not a member of the rowIds enumeration.\");");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("		public IGoogle2uRow GetGenRow(rowIds in_RowID)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			IGoogle2uRow ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)in_RowID];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch( System.Collections.Generic.KeyNotFoundException ex )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Debug.LogError( in_RowID + \" not found: \" + ex.Message );");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");

                    fileString += FormatLine("		public " + className + "Row GetRow(rowIds in_RowID)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			" + className + "Row ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)in_RowID];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch( System.Collections.Generic.KeyNotFoundException ex )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Debug.LogError( in_RowID + \" not found: \" + ex.Message );");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");


                    fileString += FormatLine("		public " + className + "Row GetRow(string in_RowString)");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			" + className + "Row ret = null;");
                    fileString += FormatLine("			try");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				ret = Rows[(int)System.Enum.Parse(typeof(rowIds), in_RowString)];");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			catch(System.ArgumentException) {");
                    fileString +=
                        FormatLine(
                            "				Debug.LogError( in_RowString + \" is not a member of the rowIds enumeration.\");");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			return ret;");
                    fileString += FormatLine("		}");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("	}");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("}");


                    sw.Write(fileString);
                    sw.Flush();
                } // using StreamWriter
            } // Using Filestream

            exportInfo.LastAttempt = DateTime.Now;
            Instance.ObjDbExport.Add(exportInfo);

            using (var fs = File.Open(Path.Combine(in_editorPath, className + ".cs"),
                File.Exists(Path.Combine(in_editorPath, className + ".cs")) ? FileMode.Truncate : FileMode.OpenOrCreate,
                FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {
                    var fileString = string.Empty;
                    //////////////////////////////////////////////////////////////////////////////////////////////////////
                    // Writing out the custom inspector
                    //////////////////////////////////////////////////////////////////////////////////////////////////////

                    fileString += FormatLine("using UnityEngine;");
                    fileString += FormatLine("using UnityEditor;");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("namespace Google2u");
                    fileString += FormatLine("{");
                    fileString += FormatLine("	[CustomEditor(typeof(" + className + "))]");
                    fileString += FormatLine("	public class " + className + "Editor : Editor");
                    fileString += FormatLine("	{");
                    fileString += FormatLine("		public int Index = 0;");
                    // sneaky time, count all the arrays and make an index for each of them within the inspector
                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_sheet.Rows[0][i].IsArrayType)
                        {
                            fileString +=
                                FormatLine("		public int " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "_Index = 0;");
                        }
                    }
                    fileString += FormatLine("		public override void OnInspectorGUI ()");
                    fileString += FormatLine("		{");
                    fileString += FormatLine("			" + className + " s = target as " + className + ";");
                    fileString += FormatLine("			" + className + "Row r = s.Rows[ Index ];");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");
                    fileString += FormatLine("			if ( GUILayout.Button(\"<<\") )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Index = 0;");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			if ( GUILayout.Button(\"<\") )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Index -= 1;");
                    fileString += FormatLine("				if ( Index < 0 )");
                    fileString += FormatLine("					Index = s.Rows.Count - 1;");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			if ( GUILayout.Button(\">\") )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Index += 1;");
                    fileString += FormatLine("				if ( Index >= s.Rows.Count )");
                    fileString += FormatLine("					Index = 0;");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			if ( GUILayout.Button(\">>\") )");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				Index = s.Rows.Count - 1;");
                    fileString += FormatLine("			}");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                    fileString += FormatLine(string.Empty);
                    fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");
                    fileString += FormatLine("			GUILayout.Label( \"ID\", GUILayout.Width( 150.0f ) );");
                    fileString += FormatLine("			{");
                    fileString += FormatLine("				EditorGUILayout.LabelField( s.rowNames[ Index ] );");
                    fileString += FormatLine("			}");
                    fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                    fileString += FormatLine(string.Empty);

                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        if (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol)
                            continue;

                        fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");

                        if (in_sheet.Rows[0][i].IsArrayType)
                        {
                            fileString +=
                                FormatLine("			if ( r." +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Count == 0 )");
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("			    GUILayout.Label( \"" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "\", GUILayout.Width( 150.0f ) );");
                            fileString += FormatLine("			    {");
                            fileString += FormatLine("			    	EditorGUILayout.LabelField( \"Empty Array\" );");
                            fileString += FormatLine("			    }");
                            fileString += FormatLine("			}");
                            fileString += FormatLine("			else");
                            fileString += FormatLine("			{");
                            fileString +=
                                FormatLine("			    GUILayout.Label( \"" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "\", GUILayout.Width( 130.0f ) );");
                            // when you switch the row you are examining, they may have different array sizes... therefore, we may actually be past the end of the list
                            fileString +=
                                FormatLine("			    if ( " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "_Index >= r." +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Count )");
                            fileString +=
                                FormatLine("				    " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + "_Index = 0;");
                            // back button
                            fileString += FormatLine("			    if ( GUILayout.Button(\"<\", GUILayout.Width( 18.0f )) )");
                            fileString += FormatLine("			    {");
                            fileString +=
                                FormatLine("			    	" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + "_Index -= 1;");
                            fileString +=
                                FormatLine("			    	if ( " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "_Index < 0 )");
                            fileString +=
                                FormatLine("			    		" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "_Index = r." +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           ".Count - 1;");
                            fileString += FormatLine("			    }");

                            fileString += FormatLine("			    EditorGUILayout.LabelField(" +
                                                     MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                         in_options.LowercaseHeader) +
                                                     "_Index.ToString(), GUILayout.Width( 15.0f ));");

                            // fwd button
                            fileString += FormatLine("			    if ( GUILayout.Button(\">\", GUILayout.Width( 18.0f )) )");
                            fileString += FormatLine("			    {");
                            fileString +=
                                FormatLine("			    	" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + "_Index += 1;");
                            fileString +=
                                FormatLine("			    	if ( " +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "_Index >= r." +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) + ".Count )");
                            fileString +=
                                FormatLine("		        		" +
                                           MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                               in_options.LowercaseHeader) +
                                           "_Index = 0;");
                            fileString += FormatLine("				}");
                        }
                        if (in_sheet.Rows[0][i].MyType != SupportedType.Void)
                        {
                            if (in_sheet.Rows[0][i].MyType == SupportedType.Float)
                            {
                                fileString += FormatLine("			GUILayout.Label( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString += FormatLine("				EditorGUILayout.FloatField( (float)r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " );");
                                fileString += FormatLine("			}");
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.Byte) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Int))
                            {
                                fileString += FormatLine("			GUILayout.Label( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString += FormatLine("				EditorGUILayout.IntField( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.BoolArray)
                            {
                                fileString += FormatLine("				EditorGUILayout.Toggle( System.Convert.ToBoolean( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index] ) );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.StringArray)
                            {
                                fileString += FormatLine("				EditorGUILayout.TextField( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "_Index] );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.FloatArray)
                            {
                                fileString += FormatLine("				EditorGUILayout.FloatField( (float)r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index] );");
                                fileString += FormatLine("			}");
                            }
                            else if (IsSupportedArrayType(in_sheet.Rows[0][i].MyType) &&
                                     (in_sheet.Rows[0][i].MyType == SupportedType.ByteArray) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.IntArray))
                            {
                                fileString += FormatLine("				EditorGUILayout.IntField( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index] );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Byte)
                            {
                                fileString += FormatLine("			GUILayout.Label( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString += FormatLine("				EditorGUILayout.TextField( System.Convert.ToString( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         " ) );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Bool)
                            {
                                fileString +=
                                    FormatLine("			GUILayout.Label( \"" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) + "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString += FormatLine("				EditorGUILayout.Toggle( System.Convert.ToBoolean( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " ) );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.String)
                            {
                                fileString += FormatLine("			GUILayout.Label( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString +=
                                    FormatLine("				EditorGUILayout.TextField( r." +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) + " );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.GameObject)
                            {
                                fileString +=
                                    FormatLine("			GUILayout.Label( \"" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) +
                                               "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString +=
                                    FormatLine("				EditorGUILayout.ObjectField( r." +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) + " );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector2)
                            {
                                fileString +=
                                    FormatLine("			EditorGUILayout.Vector2Field( \"" +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) + "\", r." +
                                               MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                   in_options.LowercaseHeader) + " );");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector2Array)
                            {
                                fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.Vector2Field( \"\", r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "_Index] );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector3)
                            {
                                fileString += FormatLine("			EditorGUILayout.Vector3Field( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "\", r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " );");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector3Array)
                            {
                                fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.Vector3Field( \"\", r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index] );");
                                fileString += FormatLine("			}");
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.Color) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Color32))
                            {
                                fileString += FormatLine("			GUILayout.Label( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "\", GUILayout.Width( 150.0f ) );");
                                fileString += FormatLine("			{");
                                fileString += FormatLine("				EditorGUILayout.ColorField( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " );");
                                fileString += FormatLine("			}");
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.ColorArray) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Color32Array))
                            {
                                fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.ColorField( \"\", r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index] );");
                                fileString += FormatLine("			}");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Quaternion)
                            {
                                fileString += FormatLine("          Vector4 converted" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) +
                                                         " = new Vector4( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + ".x, "
                                                         + "r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + ".y, "
                                                         + "r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + ".z, "
                                                         + "r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + ".w ); ");
                                fileString += FormatLine("			EditorGUILayout.Vector4Field( \"" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "\", converted" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " );");
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.QuaternionArray)
                            {
                                fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                                fileString += FormatLine("			EditorGUILayout.BeginHorizontal();");
                                fileString += FormatLine("          Vector4 converted" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " = new Vector4( r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index].x, " +
                                                         "r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index].y, " +
                                                         "r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index].z, " +
                                                         "r." +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "[" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + "_Index].w ); ");
                                fileString += FormatLine("			EditorGUILayout.Vector4Field( \"\", converted" +
                                                         MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                                             in_options.LowercaseHeader) + " );");
                                fileString += FormatLine("			}");
                            }
                        }

                        fileString += FormatLine("			EditorGUILayout.EndHorizontal();");
                        fileString += FormatLine(string.Empty);
                    }

                    fileString += FormatLine("		}");
                    fileString += FormatLine("	}");
                    fileString += FormatLine("}");


                    sw.Write(fileString);

                    ///////////////////////////////////
                    // done writing, clean up
                    sw.Flush();
                    sw.Close();
                    fs.Close();
                }
            }

            ///////////////////////////////////
            // export playmaker actions (check if playmaker is installed first)
            if (in_options.GeneratePlaymakerActions)
            {
                var playmakerPath = in_playmakerPath;

                using (var fs = File.Open(Path.Combine(playmakerPath, "Get" + className + "DataByID.cs"),
                    File.Exists(Path.Combine(playmakerPath, "Get" + className + "DataByID.cs"))
                        ? FileMode.Truncate
                        : FileMode.OpenOrCreate,
                    FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        /////////////////////////////
                        // Generate the Action for Get*DataByID

                        var fileString = string.Empty;
                        fileString += FormatLine("using UnityEngine;");
                        fileString += FormatLine(string.Empty);

                        fileString += FormatLine("namespace HutongGames.PlayMaker.Actions");
                        fileString += FormatLine("{");
                        fileString += FormatLine("	[ActionCategory(\"Google2u\")]");
                        fileString +=
                            FormatLine("	[Tooltip(\"Gets the specified entry in the " + className +
                                       " Database.\")]");
                        fileString +=
                            FormatLine("	public class Get" + className + "DataByID : FsmStateAction");
                        fileString += FormatLine("	{");
                        fileString += FormatLine("		[RequiredField]");
                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString +=
                            FormatLine("		[Tooltip(\"The object that contains the " + className +
                                       " database.\")]");
                        fileString += FormatLine("		public FsmGameObject databaseObj;");

                        fileString += FormatLine("		[RequiredField]");
                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString += FormatLine("		[Tooltip(\"Row name of the entry you wish to retrieve.\")]");
                        fileString += FormatLine("		public FsmString rowName;");

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            var fsmvarType = string.Empty;
                            var varType = StringSupportedType(in_sheet.Rows[0][i].MyType);
                            var varName = MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader);

                            if ((in_sheet.Rows[0][i].MyType == SupportedType.Void) ||
                                (IsSupportedArrayType(in_sheet.Rows[0][i].MyType)) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                            {
                                continue;
                            }

                            if (in_sheet.Rows[0][i].MyType == SupportedType.Float)
                            {
                                fsmvarType = "FsmFloat";
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.Int) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Byte))
                            {
                                fsmvarType = "FsmInt";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Bool)
                            {
                                fsmvarType = "FsmBool";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.String)
                            {
                                fsmvarType = "FsmString";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.GameObject)
                            {
                                fsmvarType = "FsmGameObject";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector2)
                            {
                                fsmvarType = "FsmVector2";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector3)
                            {
                                fsmvarType = "FsmVector3";
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.Color) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Color32))
                            {
                                fsmvarType = "FsmColor";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Quaternion)
                            {
                                fsmvarType = "FsmQuaternion";
                            }

                            fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                            fileString +=
                                FormatLine("		[Tooltip(\"Store the " + varName + " in a " + varType +
                                           " variable.\")]");

                            fileString += FormatLine("		public " + fsmvarType + " " + varName + ";");
                        }

                        fileString += FormatLine("		public override void Reset()");
                        fileString += FormatLine("		{");
                        fileString += FormatLine("			databaseObj = null;");
                        fileString += FormatLine("			rowName = null;");

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            var varName = MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader);

                            if ((in_sheet.Rows[0][i].MyType == SupportedType.Void) ||
                                IsSupportedArrayType(in_sheet.Rows[0][i].MyType) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;

                            var tmpVarName =
                                varName.Split(new[] {'_'}, StringSplitOptions.RemoveEmptyEntries)[0];

                            if (string.Compare(tmpVarName, "IGNORE", StringComparison.OrdinalIgnoreCase) == 0 ||
                                string.Compare(tmpVarName, "VOID", StringComparison.OrdinalIgnoreCase) == 0)
                                continue;

                            fileString += FormatLine("			" + varName + " = null;");
                        }

                        fileString += FormatLine("		}");

                        fileString += FormatLine("		public override void OnEnter()");
                        fileString += FormatLine("		{");
                        fileString +=
                            FormatLine(
                                "			if ( databaseObj != null && rowName != null && rowName.Value != System.String.Empty )");
                        fileString += FormatLine("			{");
                        fileString +=
                            FormatLine("				Google2u." + className +
                                       " db = databaseObj.Value.GetComponent<Google2u." +
                                       className + ">();");
                        fileString +=
                            FormatLine("				Google2u." + className +
                                       "Row row = db.GetRow( rowName.Value );");

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            var varName = MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader);

                            if ((in_sheet.Rows[0][i].MyType == SupportedType.Void) ||
                                IsSupportedArrayType(in_sheet.Rows[0][i].MyType) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;

                            var tmpVarName =
                                varName.Split(new[] {'_'}, StringSplitOptions.RemoveEmptyEntries)[0];


                            if (string.Compare(tmpVarName, "IGNORE", StringComparison.OrdinalIgnoreCase) == 0 ||
                                string.Compare(tmpVarName, "VOID", StringComparison.OrdinalIgnoreCase) == 0)
                                continue;

                            fileString += FormatLine("				if ( " + varName + " != null )");
                            fileString += FormatLine("				" + varName + ".Value = row." + varName + ";");
                        }

                        fileString += FormatLine("			}");
                        fileString += FormatLine("			Finish();");
                        fileString += FormatLine("		}");
                        fileString += FormatLine("	}");
                        fileString += FormatLine("}");

                        sw.Write(fileString);

                        ///////////////////////////////////
                        // done writing, clean up
                        sw.Flush();
                        sw.Close();
                        fs.Close();
                    }
                }

                using (var fs = File.Open(Path.Combine(playmakerPath, "Get" + className + "DataByIndex.cs"),
                    File.Exists(Path.Combine(playmakerPath, "Get" + className + "DataByIndex.cs"))
                        ? FileMode.Truncate
                        : FileMode.OpenOrCreate,
                    FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        var fileString = string.Empty;

                        /////////////////////////////
                        // Generate the Action for Get*DataByIndex
                        fileString += FormatLine("using UnityEngine;");
                        fileString += FormatLine(string.Empty);

                        fileString += FormatLine("namespace HutongGames.PlayMaker.Actions");
                        fileString += FormatLine("{");
                        fileString += FormatLine("	[ActionCategory(\"Google2u\")]");
                        fileString +=
                            FormatLine("	[Tooltip(\"Gets the specified entry in the " + className +
                                       " Database By Index.\")]");
                        fileString +=
                            FormatLine("	public class Get" + className + "DataByIndex : FsmStateAction");
                        fileString += FormatLine("	{");
                        fileString += FormatLine("		[RequiredField]");
                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString +=
                            FormatLine("		[Tooltip(\"The object that contains the " + className +
                                       " database.\")]");
                        fileString += FormatLine("		public FsmGameObject databaseObj;");

                        fileString += FormatLine("		[RequiredField]");
                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString += FormatLine("		[Tooltip(\"Row index of the entry you wish to retrieve.\")]");
                        fileString += FormatLine("		public FsmInt rowIndex;");

                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString += FormatLine("		[Tooltip(\"Row ID of the entry.\")]");
                        fileString += FormatLine("		public FsmString rowName;");

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            var fsmvarType = string.Empty;
                            var varType = StringSupportedType(in_sheet.Rows[0][i].MyType);
                            var varName = MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader);

                            if ((in_sheet.Rows[0][i].MyType == SupportedType.Void) ||
                                IsSupportedArrayType(in_sheet.Rows[0][i].MyType) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                            {
                                continue;
                            }

                            if (in_sheet.Rows[0][i].MyType == SupportedType.Float)
                            {
                                fsmvarType = "FsmFloat";
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.Byte) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Int))
                            {
                                fsmvarType = "FsmInt";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Bool)
                            {
                                fsmvarType = "FsmBool";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.String)
                            {
                                fsmvarType = "FsmString";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.GameObject)
                            {
                                fsmvarType = "FsmGameObject";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector2)
                            {
                                fsmvarType = "FsmVector2";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Vector3)
                            {
                                fsmvarType = "FsmVector3";
                            }
                            else if ((in_sheet.Rows[0][i].MyType == SupportedType.Color) ||
                                     (in_sheet.Rows[0][i].MyType == SupportedType.Color32))
                            {
                                fsmvarType = "FsmColor";
                            }
                            else if (in_sheet.Rows[0][i].MyType == SupportedType.Quaternion)
                            {
                                fsmvarType = "FsmQuaternion";
                            }

                            fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                            fileString +=
                                FormatLine("		[Tooltip(\"Store the " + varName + " in a " + varType +
                                           " variable.\")]");

                            fileString += FormatLine("		public " + fsmvarType + " " + varName + ";");
                        }

                        fileString += FormatLine("		public override void Reset()");
                        fileString += FormatLine("		{");
                        fileString += FormatLine("			databaseObj = null;");
                        fileString += FormatLine("			rowIndex = null;");

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            var varName = MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader);

                            if ((in_sheet.Rows[0][i].MyType == SupportedType.Void) ||
                                IsSupportedArrayType(in_sheet.Rows[0][i].MyType) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;

                            var tmpVarName =
                                varName.Split(new[] {'_'}, StringSplitOptions.RemoveEmptyEntries)[0];

                            if (string.Compare(tmpVarName, "IGNORE", StringComparison.OrdinalIgnoreCase) == 0 ||
                                string.Compare(tmpVarName, "VOID", StringComparison.OrdinalIgnoreCase) == 0)
                                continue;

                            fileString += FormatLine("			" + varName + " = null;");
                        }

                        fileString += FormatLine("		}");

                        fileString += FormatLine("		public override void OnEnter()");
                        fileString += FormatLine("		{");
                        fileString += FormatLine("			if ( databaseObj != null && rowIndex != null )");
                        fileString += FormatLine("			{");
                        fileString +=
                            FormatLine("				Google2u." + className +
                                       " db = databaseObj.Value.GetComponent<Google2u." +
                                       className + ">();");

                        fileString +=
                            FormatLine("				// For sanity sake, we are going to do an auto-wrap based on the input");
                        fileString += FormatLine("				// This should prevent accessing the array out of bounds");
                        fileString += FormatLine("				int i = rowIndex.Value;");
                        fileString += FormatLine("				int L = db.Rows.Count;");
                        fileString += FormatLine("				while ( i < 0 )");
                        fileString += FormatLine("					i += L;");
                        fileString += FormatLine("				while ( i > L-1 )");
                        fileString += FormatLine("					i -= L;");
                        fileString += FormatLine("				Google2u." + className + "Row row = db.Rows[i];");

                        fileString += FormatLine("				if ( rowName != null )");
                        fileString += FormatLine("					rowName.Value = db.rowNames[i];");

                        for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                        {
                            var varName = MakeValidVariableName(in_sheet.Rows[0][i].CellValueString,
                                in_options.LowercaseHeader);

                            if ((in_sheet.Rows[0][i].MyType == SupportedType.Void) ||
                                IsSupportedArrayType(in_sheet.Rows[0][i].MyType) ||
                                (in_options.ObjectDBCullColumns && i > in_sheet.FirstBlankCol))
                                continue;

                            var tmpVarName =
                                varName.Split(new[] {'_'}, StringSplitOptions.RemoveEmptyEntries)[0];

                            if (string.Compare(tmpVarName, "IGNORE", StringComparison.OrdinalIgnoreCase) == 0 ||
                                string.Compare(tmpVarName, "VOID", StringComparison.OrdinalIgnoreCase) == 0)
                                continue;

                            fileString += FormatLine("				if ( " + varName + " != null )");
                            fileString += FormatLine("				" + varName + ".Value = row." + varName + ";");
                        }

                        fileString += FormatLine("			}");
                        fileString += FormatLine("			Finish();");
                        fileString += FormatLine("		}");
                        fileString += FormatLine("	}");
                        fileString += FormatLine("}");

                        sw.Write(fileString);

                        ///////////////////////////////////
                        // done writing, clean up
                        sw.Flush();
                        sw.Close();
                        fs.Close();
                    }
                }

                using (var fs = File.Open(Path.Combine(playmakerPath, "Get" + className + "Count.cs"),
                    File.Exists(Path.Combine(playmakerPath, "Get" + className + "Count.cs"))
                        ? FileMode.Truncate
                        : FileMode.OpenOrCreate,
                    FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        /////////////////////////////
                        // Generate the Action for Get*DataByIndex
                        var fileString = string.Empty;

                        fileString += FormatLine("using UnityEngine;");
                        fileString += FormatLine(string.Empty);

                        fileString += FormatLine("namespace HutongGames.PlayMaker.Actions");
                        fileString += FormatLine("{");
                        fileString += FormatLine("	[ActionCategory(\"Google2u\")]");
                        fileString +=
                            FormatLine("	[Tooltip(\"Gets the specified entry in the " + className +
                                       " Database By Index.\")]");
                        fileString += FormatLine("	public class Get" + className + "Count : FsmStateAction");
                        fileString += FormatLine("	{");
                        fileString += FormatLine("		[RequiredField]");
                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString +=
                            FormatLine("		[Tooltip(\"The object that contains the " + className +
                                       " database.\")]");
                        fileString += FormatLine("		public FsmGameObject databaseObj;");

                        fileString += FormatLine("		[UIHint(UIHint.Variable)]");
                        fileString += FormatLine("		[Tooltip(\"Row Count of the database.\")]");
                        fileString += FormatLine("		public FsmInt rowCount;");

                        fileString += FormatLine("		public override void Reset()");
                        fileString += FormatLine("		{");
                        fileString += FormatLine("			databaseObj = null;");
                        fileString += FormatLine("			rowCount = null;");
                        fileString += FormatLine("		}");

                        fileString += FormatLine("		public override void OnEnter()");
                        fileString += FormatLine("		{");
                        fileString += FormatLine("			if ( databaseObj != null && rowCount != null )");
                        fileString += FormatLine("			{");
                        fileString +=
                            FormatLine("				Google2u." + className +
                                       " db = databaseObj.Value.GetComponent<Google2u." +
                                       className + ">();");
                        fileString += FormatLine("				rowCount.Value = db.Rows.Count;");
                        fileString += FormatLine("			}");
                        fileString += FormatLine("			Finish();");
                        fileString += FormatLine("		}");
                        fileString += FormatLine("	}");
                        fileString += FormatLine("}");

                        sw.Write(fileString);

                        ///////////////////////////////////
                        // done writing, clean up
                        sw.Flush();
                        sw.Close();
                        fs.Close();
                    }
                }
            } // /found playmaker

            PushNotification("Saving to: " + in_editorPath);
        } // ExportObjectDb
        public static void ExportJson(Google2uWorksheet in_sheet, string in_path, Google2uExportOptions in_options)
        {
            if (!Directory.Exists(in_path))
                Directory.CreateDirectory(in_path);

            in_path = Path.Combine(in_path, in_sheet.WorksheetName);

            if (!Directory.Exists(in_path))
                Directory.CreateDirectory(in_path);

            var jsonPath = Path.Combine(in_path, in_sheet.WorksheetName + ".json").Replace('\\', '/'); ;

            using (
                var fs = File.Open(jsonPath,
                    File.Exists(in_path) ? FileMode.Truncate : FileMode.OpenOrCreate,
                    FileAccess.Write))
            {
                using (var sw = new StreamWriter(fs))
                {
                    var fileString = ExportJsonObjectString(in_sheet, in_options, false);
                    sw.Write(fileString);
                    sw.Flush();
                }
            }

            if (in_options.JSONExportClass)
            {
                var jsonClassDir = in_path + "\\Resources";
                if (!Directory.Exists(jsonClassDir))
                    Directory.CreateDirectory(jsonClassDir);

                var jsonClassPath = Path.Combine(jsonClassDir, in_sheet.WorksheetName + ".cs").Replace('\\', '/'); ;

                using (
                var fs = File.Open(jsonClassPath,
                    File.Exists(in_path) ? FileMode.Truncate : FileMode.OpenOrCreate,
                    FileAccess.Write))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        var fileString = ExportJsonObjectClassString(in_sheet, in_options);
                        sw.Write(fileString);
                        sw.Flush();
                    }
                }
            }

            PushNotification("Saving to: " + in_path);
        }
        protected void DrawSpreadsheetOptions(EditorGUILayoutEx in_layout, ExportType in_exportType,
            Google2uWorksheet in_activeWorksheet)
        {
            ShowSpreadsheetOptions =
                Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsOpen",
                    ShowSpreadsheetOptions);
            var showWorkbookOptions = in_layout.BeginFadeArea(ShowSpreadsheetOptions,
                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_EXPORT_OPTIONS),
                "workbook" + WorkbookName.Replace(' ', '_') + "_Options", in_layout.InnerBox, in_layout.InnerBoxHeader);
            ShowSpreadsheetOptions = showWorkbookOptions.Open;
            Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsOpen", ShowSpreadsheetOptions);
            if (showWorkbookOptions.Show())
            {
                var prefix = "workbook" + WorkbookName.Replace(' ', '_') + "_Option_";

                ShowSpreadsheetOptionsLegacy =
                    Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsLegacyOpen",
                        ShowSpreadsheetOptionsLegacy);
                var showWorkbookOptionsLegacy = in_layout.BeginFadeArea(ShowSpreadsheetOptionsLegacy,
                    Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_LEGACY_OPTIONS),
                    "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsLegacy", in_layout.OuterBox,
                    in_layout.OuterBoxHeader);
                ShowSpreadsheetOptionsLegacy = showWorkbookOptionsLegacy.Open;
                Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsLegacyOpen",
                    ShowSpreadsheetOptionsLegacy);
                if (showWorkbookOptionsLegacy.Show())
                {
                    EditorGUILayoutEx.ToggleInput(
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_LOWERCASE_HEADER),
                        ref ExportOptions.LowercaseHeader, prefix + "LowercaseHeader");
                }
                in_layout.EndFadeArea();

                ShowSpreadsheetOptionsWhitespace =
                    Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsWhitespaceOpen",
                        ShowSpreadsheetOptionsWhitespace);
                var showWorkbookOptionsWhitespace = in_layout.BeginFadeArea(ShowSpreadsheetOptionsWhitespace,
                    Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_WHITESPACE),
                    "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsWhitespace", in_layout.OuterBox,
                    in_layout.OuterBoxHeader);
                ShowSpreadsheetOptionsWhitespace = showWorkbookOptionsWhitespace.Open;
                Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsWhitespaceOpen",
                    ShowSpreadsheetOptionsWhitespace);
                if (showWorkbookOptionsWhitespace.Show())
                {
                    EditorGUILayoutEx.ToggleInput(
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_TRIM_STRINGS),
                        ref ExportOptions.TrimStrings, prefix + "TrimStrings");
                    EditorGUILayoutEx.ToggleInput(
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_TRIM_STRING_ARRAYS),
                        ref ExportOptions.TrimStringArrays, prefix + "TrimStringArrays");
                }
                in_layout.EndFadeArea();

                ShowSpreadsheetOptionsArrayDelimiters =
                    Google2uGUIUtil.GetBool(
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsArrayDelimitersOpen",
                        ShowSpreadsheetOptionsArrayDelimiters);
                var showWorkbookOptionsArrayDelimiters = in_layout.BeginFadeArea(ShowSpreadsheetOptionsArrayDelimiters,
                    Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_ARRAY_DELIMITERS),
                    "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsArrayDelimiters", in_layout.OuterBox,
                    in_layout.OuterBoxHeader);
                ShowSpreadsheetOptionsArrayDelimiters = showWorkbookOptionsArrayDelimiters.Open;
                Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsArrayDelimitersOpen",
                    ShowSpreadsheetOptionsArrayDelimiters);
                if (showWorkbookOptionsArrayDelimiters.Show())
                {
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label(Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_NON_STRING));
                    var newArrayDelimiters = EditorGUILayout.Popup(ExportOptions.ArrayDelimiters,
                        ExportOptions.DelimiterOptionStrings, GUILayout.Width(100));
                    GUILayout.FlexibleSpace();

                    switch (newArrayDelimiters)
                    {
                        case 0: // , - Comma
                            GUILayout.Label("Example Int Array - 1,2,3,4");
                            break;
                        case 1: // | - Pipe
                            GUILayout.Label("Example Int Array - 1|2|3|4");
                            break;
                        case 2: //   - Space
                            GUILayout.Label("Example Int Array - 1 2 3 4");
                            break;
                    }
                    EditorGUILayout.EndHorizontal();

                    if (newArrayDelimiters != ExportOptions.ArrayDelimiters)
                    {
                        Google2uGUIUtil.SetInt(prefix + "ArrayDelimiters", newArrayDelimiters);
                        ExportOptions.ArrayDelimiters = newArrayDelimiters;
                        in_activeWorksheet.UpdateValidation = true;
                    }

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label(Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_STRINGS));
                    var newStringArrayDelimiters = EditorGUILayout.Popup(ExportOptions.StringArrayDelimiters,
                        ExportOptions.DelimiterOptionStrings, GUILayout.Width(100));
                    GUILayout.FlexibleSpace();

                    switch (newStringArrayDelimiters)
                    {
                        case 0: // , - Comma
                            GUILayout.Label("Example String Array - Hello,Hola,Bonjour");
                            break;
                        case 1: // | - Pipe
                            GUILayout.Label("Example String Array - Hello|Hola|Bonjour");
                            break;
                        case 2: //   - Space
                            GUILayout.Label("Example String Array - Hello Hola Bonjour");
                            break;
                    }
                    EditorGUILayout.EndHorizontal();

                    if (newStringArrayDelimiters != ExportOptions.StringArrayDelimiters)
                    {
                        Google2uGUIUtil.SetInt(prefix + "StringArrayDelimiters", newStringArrayDelimiters);
                        ExportOptions.StringArrayDelimiters = newStringArrayDelimiters;
                        in_activeWorksheet.UpdateValidation = true;
                    }

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label(Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_COMPLEX_TYPES));
                    var newComplexTypeDelimiters = EditorGUILayout.Popup(ExportOptions.ComplexTypeDelimiters,
                        ExportOptions.DelimiterOptionStrings, GUILayout.Width(100));
                    GUILayout.FlexibleSpace();

                    switch (newComplexTypeDelimiters)
                    {
                        case 0: // , - Comma
                            GUILayout.Label("Example Vector - 1,2,3");
                            break;
                        case 1: // | - Pipe
                            GUILayout.Label("Example Vector - 1|2|3");
                            break;
                        case 2: //   - Space
                            GUILayout.Label("Example Vector - 1 2 3");
                            break;
                    }
                    EditorGUILayout.EndHorizontal();

                    if (newComplexTypeDelimiters != ExportOptions.ComplexTypeDelimiters)
                    {
                        Google2uGUIUtil.SetInt(prefix + "ComplexTypeDelimiters", newComplexTypeDelimiters);
                        ExportOptions.ComplexTypeDelimiters = newComplexTypeDelimiters;
                        in_activeWorksheet.UpdateValidation = true;
                    }

                    var tmpDelimStrings = new List<string>();
                    var tmpDelimInts = new List<int>();
                    var curDelim = 0;
                    for (var i = 0; i < ExportOptions.DelimiterOptionStrings.Length; ++i)
                    {
                        if (i == ExportOptions.ComplexTypeDelimiters)
                            continue;
                        tmpDelimStrings.Add(ExportOptions.DelimiterOptionStrings[i]);
                        if (ExportOptions.ComplexArrayDelimiters == i)
                            curDelim = tmpDelimInts.Count;
                        tmpDelimInts.Add(i);
                    }

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label(Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_COMPLEX_ARRAYS));
                    var newComplexArrayDelimiters = EditorGUILayout.Popup(curDelim,
                        tmpDelimStrings.ToArray(), GUILayout.Width(100));
                    newComplexArrayDelimiters = tmpDelimInts[newComplexArrayDelimiters];
                    GUILayout.FlexibleSpace();

                    switch (newComplexArrayDelimiters)
                    {
                        case 0: // , - Comma
                        {
                            switch (ExportOptions.ComplexTypeDelimiters)
                            {
                                case 0: // , - Comma
                                    GUILayout.Label("Cannot use Comma as both Complex Type and Complex Array delimiters");
                                    break;
                                case 1: // | - Pipe
                                    GUILayout.Label("Example Vector Array - 1,2,3|4,5,6|7,8,9");
                                    break;
                                case 2: //   - Space
                                    GUILayout.Label("Example Vector Array - 1,2,3 4,5,6 7,8,9");
                                    break;
                            }
                        }
                            break;
                        case 1: // | - Pipe
                        {
                            switch (ExportOptions.ComplexTypeDelimiters)
                            {
                                case 0: // , - Comma
                                    GUILayout.Label("Example Vector Array - 1|2|3,4|5|6,7|8|9");
                                    break;
                                case 1: // | - Pipe
                                    GUILayout.Label("Cannot use Pipe as both Complex Type and Complex Array delimiters");
                                    break;
                                case 2: //   - Space
                                    GUILayout.Label("Example Vector Array - 1|2|3 4|5|6 7|8|9");
                                    break;
                            }
                        }
                            break;
                        case 2: //   - Space
                        {
                            switch (ExportOptions.ComplexTypeDelimiters)
                            {
                                case 0: // , - Comma
                                    GUILayout.Label("Example Vector Array - 1 2 3,4 5 6,7 8 9");
                                    break;
                                case 1: // | - Pipe
                                    GUILayout.Label("Example Vector Array - 1 2 3|4 5 6|7 8 9");
                                    break;
                                case 2: //   - Space
                                    GUILayout.Label("Cannot use Space as both Complex Type and Complex Array delimiters");
                                    break;
                            }
                        }
                            break;
                    }
                    EditorGUILayout.EndHorizontal();

                    if (newComplexArrayDelimiters != ExportOptions.ComplexArrayDelimiters)
                    {
                        Google2uGUIUtil.SetInt(prefix + "ComplexArrayDelimiters", newComplexArrayDelimiters);
                        ExportOptions.ComplexArrayDelimiters = newComplexArrayDelimiters;
                    }
                }
                in_layout.EndFadeArea();

                if (in_exportType == ExportType.ObjectDatabase)
                {
                    ShowSpreadsheetOptionsObjectDB =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsObjectDBOpen",
                            ShowSpreadsheetOptionsObjectDB);
                    var showWorkbookOptionsObjectDB = in_layout.BeginFadeArea(ShowSpreadsheetOptionsObjectDB,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GAME_OBJECT_DATABASE) + " " +
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CREATION_OPTIONS),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsObjectDB", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);
                    ShowSpreadsheetOptionsObjectDB = showWorkbookOptionsObjectDB.Open;
                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsObjectDBOpen",
                        ShowSpreadsheetOptionsObjectDB);
                    if (showWorkbookOptionsObjectDB.Show())
                    {
                        EditorGUILayout.LabelField("Global Options");
                        EditorGUILayout.Separator();

                        ExportOptions.ExportDatabaseGameObject =
                            EditorGUILayout.ObjectField(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GAME_OBJECT_DATABASE) +
                                ": ", ExportOptions.ExportDatabaseGameObject, typeof (GameObject), true) as GameObject;

                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GENERATE_PLAYMAKER),
                            ref ExportOptions.GeneratePlaymakerActions, prefix + "GeneratePlaymakerActions");
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_PERSIST_SCENE_LOADING),
                            ref ExportOptions.UseDoNotDestroy, prefix + "UseDoNotDestroy");

                        var oldObjectDBCullColumns = ExportOptions.ObjectDBCullColumns;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_COLUMNS),
                            ref ExportOptions.ObjectDBCullColumns, prefix + "ObjectDBCullColumns");

                        if (oldObjectDBCullColumns != ExportOptions.ObjectDBCullColumns)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldObjectDBCullRows = ExportOptions.ObjectDBCullRows;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_ROWS),
                            ref ExportOptions.ObjectDBCullRows, prefix + "ObjectDBCullRows");

                        if (oldObjectDBCullRows != ExportOptions.ObjectDBCullRows)
                            in_activeWorksheet.UpdateValidation = true;

                        EditorGUILayout.Separator();
                        EditorGUILayout.LabelField("Local Options - " + in_activeWorksheet.WorksheetName);
                        EditorGUILayout.Separator();

                        var overrideObject =
                            EditorGUILayout.ObjectField(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GAME_OBJECT_DATABASE) +
                                ": ",
                                ExportOptions.GetOverrideObjectDatabaseGameObject(in_activeWorksheet.WorksheetName),
                                typeof (GameObject), true) as GameObject;
                        if (overrideObject != null)
                            ExportOptions.SetOverrideObjectDatabaseGameObject(in_activeWorksheet.WorksheetName,
                                overrideObject);
                    }
                    in_layout.EndFadeArea();
                }

                if (in_exportType == ExportType.StaticDatabase)
                {
                    ShowSpreadsheetOptionsStaticDB =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsStaticDBOpen",
                            ShowSpreadsheetOptionsObjectDB);

                    var showWorkbookOptionsStaticDB = in_layout.BeginFadeArea(ShowSpreadsheetOptionsStaticDB,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_STATIC_DATABASE) + " " +
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CREATION_OPTIONS),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsStaticDB", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetOptionsStaticDB = showWorkbookOptionsStaticDB.Open;
                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsStaticDBOpen",
                        ShowSpreadsheetOptionsStaticDB);
                    if (showWorkbookOptionsStaticDB.Show())
                    {
                        var oldStaticDBCullColumns = ExportOptions.StaticDBCullColumns;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_COLUMNS),
                            ref ExportOptions.StaticDBCullColumns, prefix + "StaticDBCullColumns");
                        if (oldStaticDBCullColumns != ExportOptions.StaticDBCullColumns)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldStaticDBCullRows = ExportOptions.StaticDBCullRows;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_ROWS),
                            ref ExportOptions.StaticDBCullRows, prefix + "StaticDBCullRows");
                        if (oldStaticDBCullRows != ExportOptions.StaticDBCullRows)
                            in_activeWorksheet.UpdateValidation = true;
                    }
                    in_layout.EndFadeArea();
                }

                if (in_exportType == ExportType.JSON)
                {
                    ShowSpreadsheetOptionsJSON =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONOpen",
                            ShowSpreadsheetOptionsJSON);

                    var showWorkbookOptionsJSON = in_layout.BeginFadeArea(ShowSpreadsheetOptionsJSON,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_JSON_FORMATTING),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSON", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetOptionsJSON = showWorkbookOptionsJSON.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONOpen",
                        ShowSpreadsheetOptionsJSON);

                    if (showWorkbookOptionsJSON.Show())
                    {
                        var oldEscapeUnicode = ExportOptions.EscapeUnicode;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_ESCAPE_UNICODE),
                            ref ExportOptions.EscapeUnicode, prefix + "EscapeUnicode");
                        if (oldEscapeUnicode != ExportOptions.EscapeUnicode)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldJSONCellArrayToString = ExportOptions.JSONCellArrayToString;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CONVERT_CELL_ARRAYS),
                            ref ExportOptions.JSONCellArrayToString, prefix + "JSONCellArrayToString");
                        if (oldJSONCellArrayToString != ExportOptions.JSONCellArrayToString)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldJSONExportClass = ExportOptions.JSONExportClass;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_JSON_EXPORT_CLASS),
                            ref ExportOptions.JSONExportClass, prefix + "JSONExportClass");
                        if (oldJSONExportClass != ExportOptions.JSONExportClass)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldExportType = ExportOptions.JSONExportType;
                        ExportOptions.JSONExportType =
                            (Google2uExportOptions.ExportType) EditorGUILayout.EnumPopup(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_JSON_EXPORT_TYPE) + ":",
                                ExportOptions.JSONExportType);
                        if (oldExportType != ExportOptions.JSONExportType)
                        {
                            Google2uGUIUtil.SetEnum(prefix + "JSONExportType", ExportOptions.JSONExportType);
                            in_activeWorksheet.UpdateValidation = true;
                        }

                        var oldJSONCullColumns = ExportOptions.JSONCullColumns;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_COLUMNS),
                            ref ExportOptions.JSONCullColumns, prefix + "JSONCullColumns");
                        if (oldJSONCullColumns != ExportOptions.JSONCullColumns)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldJSONCullRows = ExportOptions.JSONCullRows;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_ROWS),
                            ref ExportOptions.JSONCullRows, prefix + "JSONCullRows");
                        if (oldJSONCullRows != ExportOptions.JSONCullRows)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldJSONIgnoreIDColumn = ExportOptions.JSONIgnoreIDColumn;
                        EditorGUILayoutEx.ToggleInput(
                            "Ignore ID Column",
                            ref ExportOptions.JSONIgnoreIDColumn, prefix + "JSONIgnoreIDColumn");
                        if (oldJSONIgnoreIDColumn != ExportOptions.JSONIgnoreIDColumn)
                            in_activeWorksheet.UpdateValidation = true;
                    }
                    in_layout.EndFadeArea();

                    ShowSpreadsheetPreviewJSON =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONPreviewOpen",
                            ShowSpreadsheetPreviewJSON);

                    var showWorkbookPreviewJSON = in_layout.BeginFadeArea(ShowSpreadsheetPreviewJSON,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_JSON_OBJECT_PREVIEW),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONPreviewOpen", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetPreviewJSON = showWorkbookPreviewJSON.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONPreviewOpen",
                        ShowSpreadsheetPreviewJSON);

                    if (showWorkbookPreviewJSON.Show())
                    {
                        var oldEnabled = GUI.enabled;
                        if (!in_activeWorksheet.IsDataValid)
                            GUI.enabled = false;

                        GUI.SetNextControlName("JSONPREVIEW");
                        if (
                            GUILayout.Button(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GENERATE_PREVIEW)))
                        {
                            _JSONPreviewString = Google2u.ExportJsonObjectString(in_activeWorksheet, ExportOptions, true);
                        }

                        var textSize = in_layout.CellHeader.CalcSize(new GUIContent(_JSONPreviewString));
                        _JSONPreviewScrollPos = EditorGUILayout.BeginScrollView(_JSONPreviewScrollPos, false, false,
                            GUILayout.MinHeight(250));

                        var newString = EditorGUILayout.TextArea(_JSONPreviewString, GUILayout.ExpandHeight(true),
                            GUILayout.ExpandWidth(true), GUILayout.MinWidth(textSize.x), GUILayout.MinHeight(textSize.y));
                        if (newString != _JSONPreviewString)
                            GUI.FocusControl("JSONPREVIEW");

                        GUI.enabled = oldEnabled;
                        EditorGUILayout.EndScrollView();
                    }
                    in_layout.EndFadeArea();

                    ShowSpreadsheetPreviewJSONClass =
                        Google2uGUIUtil.GetBool(
                            "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONPreviewClassOpen",
                            ShowSpreadsheetPreviewJSONClass);

                    var showWorkbookPreviewJSONClass = in_layout.BeginFadeArea(ShowSpreadsheetPreviewJSONClass,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_JSON_CLASS_PREVIEW),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONPreviewClassOpen", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetPreviewJSONClass = showWorkbookPreviewJSONClass.Open;

                    Google2uGUIUtil.SetBool(
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsJSONPreviewClassOpen",
                        ShowSpreadsheetPreviewJSONClass);

                    if (showWorkbookPreviewJSONClass.Show())
                    {
                        var oldEnabled = GUI.enabled;
                        if (!in_activeWorksheet.IsDataValid)
                            GUI.enabled = false;

                        GUI.SetNextControlName("JSONPREVIEWCLASS");
                        if (
                            GUILayout.Button(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GENERATE_CLASS)))
                        {
                            _JSONPreviewClassString = Google2u.ExportJsonObjectClassString(in_activeWorksheet,
                                ExportOptions);
                        }

                        var textSize = in_layout.CellHeader.CalcSize(new GUIContent(_JSONPreviewClassString));
                        _JSONPreviewClassScrollPos = EditorGUILayout.BeginScrollView(_JSONPreviewClassScrollPos, false,
                            false, GUILayout.MinHeight(250));

                        var newString = EditorGUILayout.TextArea(_JSONPreviewClassString, GUILayout.ExpandHeight(true),
                            GUILayout.ExpandWidth(true), GUILayout.MinWidth(textSize.x), GUILayout.MinHeight(textSize.y));
                        if (newString != _JSONPreviewClassString)
                            GUI.FocusControl("JSONPREVIEWCLASS");

                        GUI.enabled = oldEnabled;
                        EditorGUILayout.EndScrollView();
                    }
                    in_layout.EndFadeArea();
                }

                if (in_exportType == ExportType.CSV)
                {
                    ShowSpreadsheetOptionsCSV =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsCSVOpen",
                            ShowSpreadsheetOptionsCSV);

                    var showWorkbookOptionsCSV = in_layout.BeginFadeArea(ShowSpreadsheetOptionsCSV,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CSV_FORMATTING),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsCSV", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetOptionsCSV = showWorkbookOptionsCSV.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsCSVOpen",
                        ShowSpreadsheetOptionsCSV);

                    if (showWorkbookOptionsCSV.Show())
                    {
                        var oldEscapeCSVStrings = ExportOptions.EscapeCSVStrings;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_ESCAPE_STRINGS),
                            ref ExportOptions.EscapeCSVStrings, prefix + "EscapeCSVStrings");
                        if (oldEscapeCSVStrings != ExportOptions.EscapeCSVStrings)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldCSVCullColumns = ExportOptions.CSVCullColumns;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_COLUMNS),
                            ref ExportOptions.CSVCullColumns, prefix + "CSVCullColumns");
                        if (oldCSVCullColumns != ExportOptions.CSVCullColumns)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldCSVCullRows = ExportOptions.CSVCullRows;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_ROWS),
                            ref ExportOptions.CSVCullRows, prefix + "CSVCullRows");
                        if (oldCSVCullRows != ExportOptions.CSVCullRows)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldCSVConvertLineBreaks = ExportOptions.CSVConvertLineBreaks;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_ESCAPE_LINE_BREAKS),
                            ref ExportOptions.CSVConvertLineBreaks, prefix + "CSVConvertLineBreaks");
                        if (oldCSVConvertLineBreaks != ExportOptions.CSVConvertLineBreaks)
                            in_activeWorksheet.UpdateValidation = true;
                    }
                    in_layout.EndFadeArea();

                    ShowSpreadsheetPreviewCSV =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsCSVPreviewOpen",
                            ShowSpreadsheetPreviewCSV);

                    var showWorkbookPreviewCSV = in_layout.BeginFadeArea(ShowSpreadsheetPreviewCSV,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CSV_PREVIEW),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsCSVPreviewOpen", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetPreviewCSV = showWorkbookPreviewCSV.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsCSVPreviewOpen",
                        ShowSpreadsheetPreviewCSV);

                    if (showWorkbookPreviewCSV.Show())
                    {
                        var oldEnabled = GUI.enabled;
                        if (!in_activeWorksheet.IsDataValid)
                            GUI.enabled = false;

                        GUI.SetNextControlName("CSVPREVIEW");
                        if (
                            GUILayout.Button(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GENERATE_PREVIEW)))
                        {
                            _CSVPreviewString = Google2u.ExportCsvString(in_activeWorksheet, ExportOptions);
                        }

                        var textSize = in_layout.CellHeader.CalcSize(new GUIContent(_CSVPreviewString));
                        _CSVPreviewScrollPos = EditorGUILayout.BeginScrollView(_CSVPreviewScrollPos, false, false,
                            GUILayout.MinHeight(250));

                        var newString = EditorGUILayout.TextArea(_CSVPreviewString, GUILayout.ExpandHeight(true),
                            GUILayout.ExpandWidth(true), GUILayout.MinWidth(textSize.x), GUILayout.MinHeight(textSize.y));
                        if (newString != _CSVPreviewString)
                            GUI.FocusControl("CSVPREVIEW");

                        GUI.enabled = oldEnabled;
                        EditorGUILayout.EndScrollView();
                    }
                    in_layout.EndFadeArea();
                }

                if (in_exportType == ExportType.NGUI)
                {
                    ShowSpreadsheetOptionsNGUI =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsNGUIOpen",
                            ShowSpreadsheetOptionsNGUI);

                    var showWorkbookOptionsNGUI = in_layout.BeginFadeArea(ShowSpreadsheetOptionsNGUI,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_NGUI_FORMATTING),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsNGUI", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetOptionsNGUI = showWorkbookOptionsNGUI.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsNGUIOpen",
                        ShowSpreadsheetOptionsNGUI);

                    if (showWorkbookOptionsNGUI.Show())
                    {
                        var oldEscapeNGUIStrings = ExportOptions.EscapeNGUIStrings;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_ESCAPE_STRINGS),
                            ref ExportOptions.EscapeNGUIStrings, prefix + "EscapeNGUIStrings");
                        if (oldEscapeNGUIStrings != ExportOptions.EscapeNGUIStrings)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldNGUICullColumns = ExportOptions.NGUICullColumns;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_COLUMNS),
                            ref ExportOptions.NGUICullColumns, prefix + "NGUICullColumns");
                        if (oldNGUICullColumns != ExportOptions.NGUICullColumns)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldNGUICullRows = ExportOptions.NGUICullRows;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_ROWS),
                            ref ExportOptions.NGUICullRows, prefix + "NGUICullRows");
                        if (oldNGUICullRows != ExportOptions.NGUICullRows)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldNGUIConvertLineBreaks = ExportOptions.NGUIConvertLineBreaks;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_ESCAPE_LINE_BREAKS),
                            ref ExportOptions.NGUIConvertLineBreaks, prefix + "NGUIConvertLineBreaks");
                        if (oldNGUIConvertLineBreaks != ExportOptions.NGUIConvertLineBreaks)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldNGUILegacyExport = ExportOptions.NGUILegacyExport;
                        // TODO: Localize
                        EditorGUILayoutEx.ToggleInput(
                            "Use NGUI Legacy Export",
                            ref ExportOptions.NGUILegacyExport, prefix + "NGUILegacyExport");
                        if (oldNGUILegacyExport != ExportOptions.NGUILegacyExport)
                            in_activeWorksheet.UpdateValidation = true;
                    }
                    in_layout.EndFadeArea();

                    ShowSpreadsheetPreviewNGUI =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsNGUIPreviewOpen",
                            ShowSpreadsheetPreviewNGUI);

                    var showWorkbookPreviewNGUI = in_layout.BeginFadeArea(ShowSpreadsheetPreviewNGUI,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_NGUI_PREVIEW),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsNGUIPreviewOpen", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetPreviewNGUI = showWorkbookPreviewNGUI.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsNGUIPreviewOpen",
                        ShowSpreadsheetPreviewNGUI);

                    if (showWorkbookPreviewNGUI.Show())
                    {
                        var oldEnabled = GUI.enabled;
                        if (!in_activeWorksheet.IsDataValid)
                            GUI.enabled = false;

                        GUI.SetNextControlName("NGUIPREVIEW");
                        if (
                            GUILayout.Button(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GENERATE_PREVIEW)))
                        {
                            if (ExportOptions.NGUILegacyExport)
                                _NGUIPreviewString = Google2u.ExportNGUILegacyString(in_activeWorksheet, ExportOptions);
                            else
                                _NGUIPreviewString = Google2u.ExportNGUIString(in_activeWorksheet, ExportOptions);
                        }

                        var textSize = in_layout.CellHeader.CalcSize(new GUIContent(_NGUIPreviewString));
                        _NGUIPreviewScrollPos = EditorGUILayout.BeginScrollView(_NGUIPreviewScrollPos, false, false,
                            GUILayout.MinHeight(250));

                        var newString = EditorGUILayout.TextArea(_NGUIPreviewString, GUILayout.ExpandHeight(true),
                            GUILayout.ExpandWidth(true), GUILayout.MinWidth(textSize.x), GUILayout.MinHeight(textSize.y));
                        if (newString != _NGUIPreviewString)
                            GUI.FocusControl("NGUIPREVIEW");

                        GUI.enabled = oldEnabled;
                        EditorGUILayout.EndScrollView();
                    }
                    in_layout.EndFadeArea();
                }

                if (in_exportType == ExportType.XML)
                {
                    ShowSpreadsheetOptionsXML =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsXMLOpen",
                            ShowSpreadsheetOptionsXML);

                    var showWorkbookOptionsXML = in_layout.BeginFadeArea(ShowSpreadsheetOptionsXML,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_XML_FORMATTING),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsXML", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetOptionsXML = showWorkbookOptionsXML.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsXMLOpen",
                        ShowSpreadsheetOptionsXML);

                    if (showWorkbookOptionsXML.Show())
                    {
                        var oldXMLCellArrayToString = ExportOptions.XMLCellArrayToString;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CONVERT_CELL_ARRAYS),
                            ref ExportOptions.XMLCellArrayToString, prefix + "XMLCellArrayToString");
                        if (oldXMLCellArrayToString != ExportOptions.XMLCellArrayToString)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldXMLCullColumns = ExportOptions.XMLCullColumns;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_COLUMNS),
                            ref ExportOptions.XMLCullColumns, prefix + "XMLCullColumns");
                        if (oldXMLCullColumns != ExportOptions.XMLCullColumns)
                            in_activeWorksheet.UpdateValidation = true;

                        var oldXMLCullRows = ExportOptions.XMLCullRows;
                        EditorGUILayoutEx.ToggleInput(
                            Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_CULL_ROWS),
                            ref ExportOptions.XMLCullRows, prefix + "XMLCullRows");
                        if (oldXMLCullRows != ExportOptions.XMLCullRows)
                            in_activeWorksheet.UpdateValidation = true;
                    }
                    in_layout.EndFadeArea();

                    ShowSpreadsheetPreviewXML =
                        Google2uGUIUtil.GetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsXMLPreviewOpen",
                            ShowSpreadsheetPreviewXML);

                    var showWorkbookPreviewXML = in_layout.BeginFadeArea(ShowSpreadsheetPreviewXML,
                        Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_XML_PREVIEW),
                        "workbook" + WorkbookName.Replace(' ', '_') + "_OptionsXMLPreviewOpen", in_layout.OuterBox,
                        in_layout.OuterBoxHeader);

                    ShowSpreadsheetPreviewXML = showWorkbookPreviewXML.Open;

                    Google2uGUIUtil.SetBool("workbook" + WorkbookName.Replace(' ', '_') + "_OptionsXMLPreviewOpen",
                        ShowSpreadsheetPreviewXML);

                    if (showWorkbookPreviewXML.Show())
                    {
                        var oldEnabled = GUI.enabled;
                        if (!in_activeWorksheet.IsDataValid)
                            GUI.enabled = false;

                        GUI.SetNextControlName("XMLPREVIEW");
                        if (
                            GUILayout.Button(
                                Google2u.LocalizationInfo.Localize(Localization.rowIds.ID_LABEL_GENERATE_PREVIEW)))
                        {
                            _XMLPreviewString = Google2u.ExportXMLString(in_activeWorksheet, ExportOptions);
                        }

                        var textSize = in_layout.CellHeader.CalcSize(new GUIContent(_XMLPreviewString));
                        _XMLPreviewScrollPos = EditorGUILayout.BeginScrollView(_XMLPreviewScrollPos, false, false,
                            GUILayout.MinHeight(250));

                        var newString = EditorGUILayout.TextArea(_XMLPreviewString, GUILayout.ExpandHeight(true),
                            GUILayout.ExpandWidth(true), GUILayout.MinWidth(textSize.x), GUILayout.MinHeight(textSize.y));
                        if (newString != _XMLPreviewString)
                            GUI.FocusControl("XMLPREVIEW");

                        GUI.enabled = oldEnabled;
                        EditorGUILayout.EndScrollView();
                    }
                    in_layout.EndFadeArea();
                }
            }
            in_layout.EndFadeArea();
        }
Beispiel #18
0
        public static string ExportXMLString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
        {
            var bConvertArrays = !in_options.XMLCellArrayToString;

            // Create the System.Xml.XmlDocument.
            var xmlDoc   = new XmlDocument();
            var rootNode = xmlDoc.CreateElement("Sheets");

            xmlDoc.AppendChild(rootNode);

            var sheetNode = xmlDoc.CreateElement("sheet");
            var sheetName = xmlDoc.CreateAttribute("name");

            sheetName.Value = in_sheet.WorksheetName;


            var curRow = 0;

            sheetNode.Attributes.Append(sheetName);
            rootNode.AppendChild(sheetNode);

            // Iterate through each row, printing its cell values.
            foreach (var row in in_sheet.Rows)
            {
                if (curRow < 1)
                {
                    curRow++;
                    continue;
                }
                if (in_sheet.UseTypeRow == true && curRow == 1)
                {
                    curRow++;
                    continue;
                }

                var rowType   = row[0].GetTypeFromValue();
                var rowHeader = row[0].CellValueString;
                if (string.IsNullOrEmpty(rowHeader))
                // if this header is empty
                {
                    if (in_options.XMLCullRows)
                    {
                        break;
                    }
                    curRow++;
                    continue;
                }

                if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                // if this cell is void, then skip the row completely
                {
                    curRow++;
                    continue;
                }


                if (in_options.XMLColsAsChildTags)
                {
                    XmlNode rowNode = xmlDoc.CreateElement("row");
                    var     rowName = xmlDoc.CreateAttribute("name");
                    rowName.Value = row[0].CellValueString;
                    if (rowNode.Attributes == null)
                    {
                        continue;
                    }
                    rowNode.Attributes.Append(rowName);
                    sheetNode.AppendChild(rowNode);


                    // Iterate over the remaining columns, and print each cell value
                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        // Don't process rows or columns marked for ignore
                        if ((row[i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(row[0].CellValueString) ||
                             in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(in_sheet.Rows[0][i].CellValueString) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("void",
                                                                        StringComparison.InvariantCultureIgnoreCase) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("ignore",
                                                                        StringComparison.InvariantCultureIgnoreCase) ||
                             (in_options.XMLCullColumns && i >= in_sheet.FirstBlankCol)))
                        {
                            continue;
                        }

                        XmlNode colNode = xmlDoc.CreateElement(in_sheet.Rows[0][i].CellValueString);

                        var colType = xmlDoc.CreateAttribute("type");
                        colType.Value = row[i].CellTypeString;
                        if (colNode.Attributes != null)
                        {
                            colNode.Attributes.Append(colType);
                        }

                        if (bConvertArrays && IsSupportedArrayType(row[i].MyType))
                        {
                            var delim = in_options.DelimiterOptions[in_options.ArrayDelimiters].ToCharArray();

                            if (row[i].MyType == SupportedType.StringArray)
                            {
                                delim = in_options.DelimiterOptions[in_options.StringArrayDelimiters].ToCharArray();
                            }

                            var value = row[i].CellValueString.Split(delim, StringSplitOptions.RemoveEmptyEntries);
                            foreach (var s in value)
                            {
                                XmlNode arrNode = xmlDoc.CreateElement("entry");
                                if (row[i].MyType == SupportedType.BoolArray)
                                {
                                    var val = s.ToLower();
                                    if (val == "1")
                                    {
                                        val = "true";
                                    }
                                    if (val == "0")
                                    {
                                        val = "false";
                                    }
                                    arrNode.InnerText = val;
                                }
                                else
                                {
                                    arrNode.InnerText = s;
                                }

                                colNode.AppendChild(arrNode);
                            }
                        }
                        else
                        {
                            colNode.InnerText = row[i].CellValueString;
                        }

                        rowNode.AppendChild(colNode);
                    }
                    curRow++;
                }
                else
                {
                    XmlNode rowNode = xmlDoc.CreateElement("row");
                    if (rowNode.Attributes == null)
                    {
                        continue;
                    }

                    var rowAttribute = xmlDoc.CreateAttribute("UID");
                    rowAttribute.Value = row[0].CellValueString;
                    rowNode.Attributes.Append(rowAttribute);

                    // Iterate over the remaining columns, and print each cell value
                    for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                    {
                        // Don't process rows or columns marked for ignore
                        if ((row[i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(row[0].CellValueString) ||
                             in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(in_sheet.Rows[0][i].CellValueString) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("void",
                                                                        StringComparison.InvariantCultureIgnoreCase) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("ignore",
                                                                        StringComparison.InvariantCultureIgnoreCase) ||
                             (in_options.XMLCullColumns && i >= in_sheet.FirstBlankCol)))
                        {
                            continue;
                        }

                        rowAttribute       = xmlDoc.CreateAttribute(in_sheet.Rows[0][i].CellValueString);
                        rowAttribute.Value = row[i].CellValueString;

                        rowNode.Attributes.Append(rowAttribute);
                    }


                    sheetNode.AppendChild(rowNode);

                    curRow++;
                }
            }

            string retstring;

            using (var stringWriter = new StringWriter())
            {
                using (var xmlTextWriter = new XmlTextWriter(stringWriter))
                {
                    xmlTextWriter.Formatting = Formatting.Indented;
                    xmlDoc.WriteTo(xmlTextWriter);
                    retstring = stringWriter.ToString();
                }
            }

            return(retstring);
        }
 public static string ExportJsonObjectClassString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
 {
     return ExportJsonObjectClassString(in_sheet, in_options, 0);
 }
 public DataValidationParams(Google2uWorksheet in_worksheet, Google2uExportOptions in_options)
 {
     Worksheet = in_worksheet;
     Options = in_options;
 }
Beispiel #21
0
 public static string ExportNGUILegacyString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
 {
     return ExportNGUILegacyString(in_sheet, in_options, 1);
 }
Beispiel #22
0
        public static string ExportJsonObjectString(Google2uWorksheet in_sheet, Google2uExportOptions in_options,
                                                    bool in_newlines)
        {
            var indent         = 0;
            var retString      = string.Empty;
            var escapeUnicode  = in_options.EscapeUnicode;
            var bConvertArrays = !in_options.JSONCellArrayToString;

            if (in_options.JSONExportPretty)
            {
                in_newlines = true;
            }

            if (in_options.JSONExportType == Google2uExportOptions.ExportType.ExportObject)
            {
                retString += Indent(indent, "{");

                if (in_newlines)
                {
                    retString += Environment.NewLine;
                    indent++;
                }

                retString += Indent(indent, ("\"" + SanitizeJson(in_sheet.WorksheetName, escapeUnicode) + "Row\":"));
                // "sheetName":

                if (in_newlines)
                {
                    retString += Environment.NewLine;
                }
            }

            retString += Indent(indent, "["); // [

            if (in_newlines)
            {
                retString += Environment.NewLine;
                indent++;
            }

            var rowCt = in_sheet.Rows.Count;

            if (rowCt > 0)
            {
                var curRow   = 0;
                var validRow = false;

                // Iterate through each row, printing its cell values.
                foreach (var row in in_sheet.Rows)
                {
                    // if we are skipping the type row, record the types and increment curRow now
                    if (curRow == 0 || (curRow == 1 && in_sheet.UseTypeRow))
                    {
                        curRow++;
                        continue;
                    }

                    var rowType   = row[0].GetTypeFromValue();
                    var rowHeader = row[0].CellValueString;
                    if (string.IsNullOrEmpty(rowHeader))
                    // if this header is empty
                    {
                        if (in_options.JSONCullRows)
                        {
                            break;
                        }
                        curRow++;
                        continue;
                    }

                    if (rowType == SupportedType.Void ||
                        rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                    // if this cell is void, then skip the row completely
                    {
                        curRow++;
                        continue;
                    }

                    if (validRow)
                    {
                        retString += ",";
                        if (in_newlines)
                        {
                            retString += Environment.NewLine;
                        }
                    }

                    validRow = true;

                    retString += Indent(indent, "{");
                    if (in_newlines)
                    {
                        retString += Environment.NewLine;
                        indent++;
                    }

                    var firstCell = true;
                    // Iterate over the remaining columns, and print each cell value
                    for (var i = 0; i < in_sheet.Rows[0].Count; i++)
                    {
                        // Don't process rows or columns marked for ignore
                        if ((row[i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(row[0].CellValueString) ||
                             in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(in_sheet.Rows[0][i].CellValueString) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("void", StringComparison.InvariantCultureIgnoreCase) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("ignore", StringComparison.InvariantCultureIgnoreCase) ||
                             (in_options.JSONCullColumns && i >= in_sheet.FirstBlankCol) ||
                             (in_options.JSONIgnoreIDColumn && i == 0)))
                        {
                            continue;
                        }

                        if (firstCell)
                        {
                            firstCell = false;
                        }
                        else
                        {
                            retString += ", ";
                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                            }
                        }

                        var myType = in_sheet.Rows[0].Cells[i].MyType;

                        if (IsComplexType(myType))
                        {
                            retString += Indent(indent,
                                                "\"" + SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) + "\":");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            retString += Indent(indent, "[");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            var complexTypeDelim =
                                in_options.DelimiterOptions[in_options.ComplexTypeDelimiters].ToCharArray();
                            var value = row[i].CellValueString.Split(complexTypeDelim,
                                                                     StringSplitOptions.RemoveEmptyEntries);
                            var ct = 0;
                            foreach (var s in value)
                            {
                                retString += Indent(indent, SanitizeJson(s, escapeUnicode));

                                if (ct < value.Length - 1)
                                {
                                    retString += ",";
                                    if (in_newlines)
                                    {
                                        retString += Environment.NewLine;
                                    }
                                }
                                ct++;
                            }

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent--;
                            }
                            retString += Indent(indent, "]");

                            if (in_newlines)
                            {
                                indent--;
                            }
                        }
                        else if (IsComplexArrayType(myType))
                        {
                            retString += Indent(indent,
                                                "\"" + SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) + "\":");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            retString += Indent(indent, "[");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            var complexArrayDelim =
                                in_options.DelimiterOptions[in_options.ComplexArrayDelimiters].ToCharArray();
                            var complexArray = row[i].CellValueString.Split(complexArrayDelim,
                                                                            StringSplitOptions.RemoveEmptyEntries);
                            var ctArray = 0;
                            foreach (var cv in complexArray)
                            {
                                if (in_newlines)
                                {
                                    retString += Environment.NewLine;
                                    indent++;
                                }

                                retString += Indent(indent, "[");

                                if (in_newlines)
                                {
                                    retString += Environment.NewLine;
                                    indent++;
                                }

                                var complexTypeDelim =
                                    in_options.DelimiterOptions[in_options.ComplexTypeDelimiters].ToCharArray();
                                var complexType = cv.Split(complexTypeDelim, StringSplitOptions.RemoveEmptyEntries);
                                var ctValue     = 0;
                                foreach (var s in complexType)
                                {
                                    retString += Indent(indent, SanitizeJson(s, escapeUnicode));

                                    if (ctValue < complexType.Length - 1)
                                    {
                                        retString += ",";
                                        if (in_newlines)
                                        {
                                            retString += Environment.NewLine;
                                        }
                                    }
                                    ctValue++;
                                }

                                if (in_newlines)
                                {
                                    retString += Environment.NewLine;
                                    indent--;
                                }
                                retString += Indent(indent, "]");

                                if (in_newlines)
                                {
                                    indent--;
                                }

                                if (ctArray < complexArray.Length - 1)
                                {
                                    retString += ",";
                                    if (in_newlines)
                                    {
                                        retString += Environment.NewLine;
                                    }
                                }
                                ctArray++;
                            }

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent--;
                            }
                            retString += Indent(indent, "]");

                            if (in_newlines)
                            {
                                indent--;
                            }
                        }
                        else if (bConvertArrays && IsSupportedArrayType(myType))
                        {
                            var delim = in_options.DelimiterOptions[in_options.ArrayDelimiters].ToCharArray();

                            retString += Indent(indent,
                                                "\"" + SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) + "\":");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            retString += Indent(indent, "[");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            var isString = false;

                            if (row[i].MyType == SupportedType.StringArray)
                            {
                                delim    = in_options.DelimiterOptions[in_options.StringArrayDelimiters].ToCharArray();
                                isString = true;
                            }
                            if (i == 0)
                            {
                                isString = true;
                            }

                            var value = row[i].CellValueString.Split(delim, StringSplitOptions.RemoveEmptyEntries);
                            var ct    = 0;
                            foreach (var s in value)
                            {
                                if (isString)
                                {
                                    retString += Indent(indent, "\"" + SanitizeJson(s, escapeUnicode) + "\"");
                                }
                                else if (in_sheet.Rows[0].Cells[i].MyType == SupportedType.BoolArray)
                                {
                                    var val = s.ToLower();
                                    if (val == "1")
                                    {
                                        val = "true";
                                    }
                                    if (val == "0")
                                    {
                                        val = "false";
                                    }
                                    retString += Indent(indent, SanitizeJson(val, escapeUnicode));
                                }
                                else
                                {
                                    retString += Indent(indent, SanitizeJson(s, escapeUnicode));
                                }

                                if (ct < value.Length - 1)
                                {
                                    retString += ",";
                                    if (in_newlines)
                                    {
                                        retString += Environment.NewLine;
                                    }
                                }
                                ct++;
                            }
                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent--;
                            }
                            retString += Indent(indent, "]");

                            if (in_newlines)
                            {
                                indent--;
                            }
                        }
                        else
                        {
                            if (in_sheet.UseTypeRow == false ||
                                in_sheet.Rows[0].Cells[i].MyType == SupportedType.String || (i == 0))
                            {
                                retString += Indent(indent, "\"" +
                                                    SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                 escapeUnicode) +
                                                    "\":\"" +
                                                    SanitizeJson(row[i].CellValueString, escapeUnicode) + "\"");
                            }
                            else if (in_sheet.Rows[0].Cells[i].MyType == SupportedType.Bool)
                            {
                                var val = row[i].CellValueString.ToLower();
                                if (val == "1")
                                {
                                    val = "true";
                                }
                                if (val == "0")
                                {
                                    val = "false";
                                }
                                retString += Indent(indent, "\"" +
                                                    SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                 escapeUnicode) +
                                                    "\":" +
                                                    SanitizeJson(val, escapeUnicode));
                            }

                            else if (in_sheet.Rows[0].Cells[i].MyType == SupportedType.BoolArray)
                            {
                                var val = row[i].CellValueString.ToLower();
                                if (val == "1")
                                {
                                    val = "true";
                                }
                                if (val == "0")
                                {
                                    val = "false";
                                }
                                retString += Indent(indent, "\"" +
                                                    SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                 escapeUnicode) +
                                                    "\":" +
                                                    SanitizeJson(val, escapeUnicode));
                            }
                            else
                            {
                                retString += Indent(indent, "\"" +
                                                    SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                 escapeUnicode) +
                                                    "\":" +
                                                    SanitizeJson(row[i].CellValueString, escapeUnicode) + "");
                            }
                        }

                        if (in_newlines)
                        {
                            //retString += Environment.NewLine;
                        }
                    }

                    if (in_newlines)
                    {
                        retString += Environment.NewLine;
                        indent--;
                    }

                    retString += Indent(indent, "}");

                    curRow++;
                }
            }

            if (in_newlines)
            {
                retString += Environment.NewLine;
                indent--;
            }
            retString += Indent(indent, "]");

            if (in_options.JSONExportType == Google2uExportOptions.ExportType.ExportObject)
            {
                if (in_newlines)
                {
                    retString += Environment.NewLine;
                    indent--;
                }
                retString += Indent(indent, "}");
            }
            return(retString);
        }
Beispiel #23
0
        public static string ExportJsonObjectClassString(Google2uWorksheet in_sheet, Google2uExportOptions in_options,
                                                         int in_indent)
        {
            var retString = string.Empty;

            if (in_sheet.Rows.Count <= 0)
            {
                return(retString);
            }

            var headerRow = in_sheet.Rows[0];

            var indent = in_indent;

            retString += FormatLine("//----------------------------------------------");
            retString += FormatLine("//    Google2u: Google Doc Unity integration");
            retString += FormatLine("//         Copyright © 2015 Litteratus");
            retString += FormatLine("//");
            retString += FormatLine("//        This file has been auto-generated");
            retString += FormatLine("//              Do not manually edit");
            retString += FormatLine("//----------------------------------------------");
            retString += FormatLine(string.Empty);
            retString += FormatLine("using System.Collections.Generic;");
            retString += FormatLine("using UnityEngine;");
            retString += FormatLine(string.Empty);
            retString += FormatLine("namespace Google2u");
            retString += FormatLine("{");

            indent++;

            retString += Indent(indent, "public class " + in_sheet.WorksheetName + "Row" + Environment.NewLine);
            retString += Indent(indent, "{" + Environment.NewLine);

            indent++;

            var idCell = true;

            foreach (var cell in headerRow.Cells)
            {
                if (!idCell && (cell.MyType == SupportedType.Void || cell.MyType == SupportedType.Unrecognized))
                // Don't process rows or columns marked for ignore
                {
                    if (in_options.JSONCullColumns)
                    {
                        break;
                    }
                    continue;
                }

                retString += Indent(indent, "");

                if (idCell)
                {
                    retString += "public string " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                }
                else
                {
                    // check the type
                    switch (cell.MyType)
                    {
                    case SupportedType.GameObject:
                    case SupportedType.String:
                        retString += "public string " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.Int:
                        retString += "public int " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                        break;

                    case SupportedType.Float:
                        retString += "public float " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                        break;

                    case SupportedType.Bool:
                        retString += "public bool " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                        break;

                    case SupportedType.Byte:
                        retString += "public byte  " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                        break;

                    case SupportedType.Vector2:
                        retString += "public List<float> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString += "public Vector2 " + cell.CellValueString +
                                     "_Vector2 { get { return new Vector2(" + cell.CellValueString + "[0], " +
                                     cell.CellValueString + "[1]); } }" + Environment.NewLine;
                        break;

                    case SupportedType.Vector3:
                        retString += "public List<float> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString += "public Vector3 " + cell.CellValueString +
                                     "_Vector3 { get { return new Vector3(" + cell.CellValueString + "[0], " +
                                     cell.CellValueString + "[1], " + cell.CellValueString + "[2]); } }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.Color:
                        retString += "public List<float> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString += "public Color " + cell.CellValueString + "_Color { get { return new Color(" +
                                     cell.CellValueString + "[0], " + cell.CellValueString + "[1], " +
                                     cell.CellValueString + "[2], " + cell.CellValueString + "[3]); } }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.Color32:
                        retString += "public List<int> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString += "public Color32 " + cell.CellValueString +
                                     "_Color32 { get { return new Color((byte)" + cell.CellValueString +
                                     "[0], (byte)" + cell.CellValueString + "[1], (byte)" + cell.CellValueString +
                                     "[2], (byte)" + cell.CellValueString + "[3]); } }" + Environment.NewLine;
                        break;

                    case SupportedType.Quaternion:
                        retString += "public List<float> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString += "public Quaternion " + cell.CellValueString +
                                     "_Quaternion { get { return new Color(" + cell.CellValueString + "[0], " +
                                     cell.CellValueString + "[1], " + cell.CellValueString + "[2], " +
                                     cell.CellValueString + "[3]); } }" + Environment.NewLine;
                        break;

                    case SupportedType.FloatArray:
                        retString += "public List<float> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.IntArray:
                        retString += "public List<int> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.BoolArray:
                        retString += "public List<bool> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.ByteArray:
                        retString += "public List<byte> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.StringArray:
                        retString += "public List<string> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        break;

                    case SupportedType.Vector2Array:
                        retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString +=
                            string.Format(
                                "public Vector2[] {0}_Vector2Array {{get {{var len = {0}.Count; var ret = new Vector2[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Vector2({0}[i][0], {0}[i][1]); }} return ret; }} }}",
                                cell.CellValueString);
                        break;

                    case SupportedType.Vector3Array:
                        retString += "public List<List<float>>  " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString +=
                            string.Format(
                                "public Vector3[] {0}_Vector3Array {{get {{var len = {0}.Count; var ret = new Vector3[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Vector3({0}[i][0], {0}[i][1], {0}[i][2]); }} return ret; }} }}",
                                cell.CellValueString);
                        break;

                    case SupportedType.ColorArray:
                        retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString +=
                            string.Format(
                                "public Color[] {0}_ColorArray {{get {{var len = {0}.Count; var ret = new Color[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Color({0}[i][0], {0}[i][1], {0}[i][2], {0}[i][3]); }} return ret; }} }}",
                                cell.CellValueString);
                        break;

                    case SupportedType.Color32Array:
                        retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString +=
                            string.Format(
                                "public Color32[] {0}_Color32Array {{get {{var len = {0}.Count; var ret = new Color32[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Color32({0}[i][0], {0}[i][1], {0}[i][2], {0}[i][3]); }} return ret; }} }}",
                                cell.CellValueString);
                        break;

                    case SupportedType.QuaternionArray:
                        retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" +
                                     Environment.NewLine;
                        retString += Indent(indent, "");
                        retString +=
                            string.Format(
                                "public Quaternion[] {0}_QuaternionArray {{get {{var len = {0}.Count; var ret = new Quaternion[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Quaternion({0}[i][0], {0}[i][1], {0}[i][2], {0}[i][3]); }} return ret; }} }}",
                                cell.CellValueString);
                        break;
                    }
                }
                idCell = false;
            }

            indent--;

            retString += Indent(indent, "}" + Environment.NewLine);

            if (in_options.JSONExportType == Google2uExportOptions.ExportType.ExportObject)
            {
                retString += Environment.NewLine;
                retString += Indent(indent, "public class " + in_sheet.WorksheetName + "Database" + Environment.NewLine);
                retString += Indent(indent, "{" + Environment.NewLine);

                indent++;
                retString += Indent(indent,
                                    "public List< " + in_sheet.WorksheetName + "Row > " + in_sheet.WorksheetName + "Row { get; set; }" +
                                    Environment.NewLine);
                indent--;

                retString += Indent(indent, "}" + Environment.NewLine);
            }

            retString += FormatLine("}");

            return(retString);
        }
Beispiel #24
0
 public static string ExportJsonObjectClassString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
 {
     return(ExportJsonObjectClassString(in_sheet, in_options, 0));
 }
        public static void CalculateColumnWidth(int in_col, Google2uWorksheet in_worksheet)
        {
            var longest = 0;
            var longestString = string.Empty;
            foreach (var row in in_worksheet.RowsDisplay)
            {
                var cell = row[in_col];
                var len = cell.CellValueLength;
                if (len <= longest)
                    continue;

                longest = len;
                longestString = cell.CellValueString;
            }
            var strlen = GUIStyle.none.CalcSize(new GUIContent(longestString));
            in_worksheet.ColOptions[in_col].Width = Math.Max(26, (int) Math.Round(strlen.x + 0.5f) + 16);
        }
Beispiel #26
0
 public static string ExportNGUILegacyString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
 {
     return(ExportNGUILegacyString(in_sheet, in_options, 1));
 }
        public static string ExportJsonObjectClassString(Google2uWorksheet in_sheet, Google2uExportOptions in_options, int in_indent)
        {
            var retString =  string.Empty;

            if (in_sheet.Rows.Count <= 0)
                return retString;

            var headerRow = in_sheet.Rows[0];

            var indent = in_indent;

            retString += FormatLine("//----------------------------------------------");
            retString += FormatLine("//    Google2u: Google Doc Unity integration");
            retString += FormatLine("//         Copyright © 2015 Litteratus");
            retString += FormatLine("//");
            retString += FormatLine("//        This file has been auto-generated");
            retString += FormatLine("//              Do not manually edit");
            retString += FormatLine("//----------------------------------------------");
            retString += FormatLine(System.String.Empty);
            retString += FormatLine("using System.Collections.Generic;");
            retString += FormatLine("using UnityEngine;"); 
            retString += FormatLine(System.String.Empty);
            retString += FormatLine("namespace Google2u");
            retString += FormatLine("{");

            indent++;

            retString += Indent(indent, "public class " + in_sheet.WorksheetName + "Row" + Environment.NewLine);
            retString += Indent(indent, "{" + Environment.NewLine);

            indent++;

            var idCell = true;
            foreach (var cell in headerRow.Cells)
            {
                
                if(!idCell && (cell.MyType == SupportedType.Void || cell.MyType == SupportedType.Unrecognized))
                // Don't process rows or columns marked for ignore
                {
                    if (string.IsNullOrEmpty(cell.CellValueString) && in_options.JSONCullColumns)
                        break;
                    continue;
                }

                retString += Indent(indent, "");

                if (idCell)
                {
                    retString += "public string " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                }
                else
                {

                    // check the type
                    switch (cell.MyType)
                    {
                        case SupportedType.GameObject:
                        case SupportedType.String:
                            retString += "public string " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.Int:
                            retString += "public int " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.Float:
                            retString += "public float " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.Bool:
                            retString += "public bool " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.Byte:
                            retString += "public byte  " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.Vector2:
                            retString += "public List<float> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += "public Vector2 " + cell.CellValueString + "_Vector2 { get { return new Vector2(" + cell.CellValueString + "[0], " + cell.CellValueString + "[1]); } }" + Environment.NewLine;
                            break;
                        case SupportedType.Vector3:
                            retString += "public List<float> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += "public Vector3 " + cell.CellValueString + "_Vector3 { get { return new Vector3(" + cell.CellValueString + "[0], " + cell.CellValueString + "[1], " + cell.CellValueString + "[2]); } }" + Environment.NewLine;
                            break;
                        case SupportedType.Color:
                            retString += "public List<float> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += "public Color " + cell.CellValueString + "_Color { get { return new Color(" + cell.CellValueString + "[0], " + cell.CellValueString + "[1], " + cell.CellValueString + "[2], " + cell.CellValueString + "[3]); } }" + Environment.NewLine;
                            break;
                        case SupportedType.Color32:
                            retString += "public List<int> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += "public Color32 " + cell.CellValueString + "_Color32 { get { return new Color((byte)" + cell.CellValueString + "[0], (byte)" + cell.CellValueString + "[1], (byte)" + cell.CellValueString + "[2], (byte)" + cell.CellValueString + "[3]); } }" + Environment.NewLine;
                            break;
                        case SupportedType.Quaternion:
                            retString += "public List<float> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += "public Quaternion " + cell.CellValueString + "_Quaternion { get { return new Color(" + cell.CellValueString + "[0], " + cell.CellValueString + "[1], " + cell.CellValueString + "[2], " + cell.CellValueString + "[3]); } }" + Environment.NewLine;
                            break;
                        case SupportedType.FloatArray:
                            retString += "public List<float> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.IntArray:
                            retString += "public List<int> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.BoolArray:
                            retString += "public List<bool> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.ByteArray:
                            retString += "public List<byte> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.StringArray:
                            retString += "public List<string> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;
                            break;
                        case SupportedType.Vector2Array:
                            retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += string.Format("public Vector2[] {0}_Vector2Array {{get {{var len = {0}.Count; var ret = new Vector2[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Vector2({0}[i][0], {0}[i][1]); }} return ret; }} }}", cell.CellValueString);
                            break;
                        case SupportedType.Vector3Array:
                            retString += "public List<List<float>>  " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += string.Format("public Vector3[] {0}_Vector3Array {{get {{var len = {0}.Count; var ret = new Vector3[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Vector3({0}[i][0], {0}[i][1], {0}[i][2]); }} return ret; }} }}", cell.CellValueString);
                            break;
                        case SupportedType.ColorArray:
                            retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += string.Format("public Color[] {0}_ColorArray {{get {{var len = {0}.Count; var ret = new Color[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Color({0}[i][0], {0}[i][1], {0}[i][2], {0}[i][3]); }} return ret; }} }}", cell.CellValueString);
                            break;
                        case SupportedType.Color32Array:
                            retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += string.Format("public Color32[] {0}_Color32Array {{get {{var len = {0}.Count; var ret = new Color32[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Color32({0}[i][0], {0}[i][1], {0}[i][2], {0}[i][3]); }} return ret; }} }}", cell.CellValueString);
                            break;
                        case SupportedType.QuaternionArray:
                            retString += "public List<List<float>> " + cell.CellValueString + " { get; set; }" + Environment.NewLine;retString += Indent(indent, "");
                            retString += string.Format("public Quaternion[] {0}_QuaternionArray {{get {{var len = {0}.Count; var ret = new Quaternion[len]; for (var i = 0; i < len; ++i) {{ ret[i] = new Quaternion({0}[i][0], {0}[i][1], {0}[i][2], {0}[i][3]); }} return ret; }} }}", cell.CellValueString);
                            break;
                    }

                }
                idCell = false;

            }

            indent--;

            retString += Indent(indent, "}" + Environment.NewLine);

            if (in_options.JSONExportType == Google2uExportOptions.ExportType.ExportObject)
            {
                retString += Environment.NewLine;
                retString += Indent(indent, "public class " + in_sheet.WorksheetName + "Database" + Environment.NewLine);
                retString += Indent(indent, "{" + Environment.NewLine);

                indent++;
                retString += Indent(indent,
                    "public List< " + in_sheet.WorksheetName + "Row > " + in_sheet.WorksheetName + "Row { get; set; }" + Environment.NewLine);
                indent--;

                retString += Indent(indent, "}" + Environment.NewLine);
            }

            retString += FormatLine("}");

            return retString;
        }
Beispiel #28
0
        public static string ExportXMLString(Google2uWorksheet in_sheet, Google2uExportOptions in_options)
        {
            var bConvertArrays = !in_options.XMLCellArrayToString;

            // Create the System.Xml.XmlDocument.
            var xmlDoc = new XmlDocument();
            var rootNode = xmlDoc.CreateElement("Sheets");
            xmlDoc.AppendChild(rootNode);

            var sheetNode = xmlDoc.CreateElement("sheet");
            var sheetName = xmlDoc.CreateAttribute("name");
            sheetName.Value = in_sheet.WorksheetName;


            var curRow = 0;

            sheetNode.Attributes.Append(sheetName);
            rootNode.AppendChild(sheetNode);

            // Iterate through each row, printing its cell values.
            foreach (var row in in_sheet.Rows)
            {
                if (curRow < 1)
                {
                    curRow++;
                    continue;
                }
                if (in_sheet.UseTypeRow == true && curRow == 1)
                {
                    curRow++;
                    continue;
                }

                var rowType = row[0].GetTypeFromValue();
                var rowHeader = row[0].CellValueString;
                if (string.IsNullOrEmpty(rowHeader))
                    // if this header is empty
                {
                    if (in_options.XMLCullRows)
                        break;
                    curRow++;
                    continue;
                }

                if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                    // if this cell is void, then skip the row completely
                {
                    curRow++;
                    continue;
                }

                XmlNode rowNode = xmlDoc.CreateElement("row");
                var rowName = xmlDoc.CreateAttribute("name");
                rowName.Value = row[0].CellValueString;
                if (rowNode.Attributes == null) continue;
                rowNode.Attributes.Append(rowName);
                sheetNode.AppendChild(rowNode);


                // Iterate over the remaining columns, and print each cell value
                for (var i = 1; i < in_sheet.Rows[0].Count; i++)
                {
                    // Don't process rows or columns marked for ignore
                    if ((row[i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(row[0].CellValueString) ||
                             in_sheet.Rows[0][i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(in_sheet.Rows[0][i].CellValueString) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("void", StringComparison.InvariantCultureIgnoreCase) ||
                             in_sheet.Rows[0][i].CellValueString.Equals("ignore", StringComparison.InvariantCultureIgnoreCase) ||
                             (in_options.XMLCullColumns && i >= in_sheet.FirstBlankCol)))
                    {
                        continue;
                    }

                    XmlNode colNode = xmlDoc.CreateElement(in_sheet.Rows[0][i].CellValueString);

                    var colType = xmlDoc.CreateAttribute("type");
                    colType.Value = row[i].CellTypeString;
                    if (colNode.Attributes != null) colNode.Attributes.Append(colType);

                    if (bConvertArrays && IsSupportedArrayType(row[i].MyType))
                    {
                        var delim = in_options.DelimiterOptions[in_options.ArrayDelimiters].ToCharArray();

                        if (row[i].MyType == SupportedType.StringArray)
                            delim = in_options.DelimiterOptions[in_options.StringArrayDelimiters].ToCharArray();

                        var value = row[i].CellValueString.Split(delim, StringSplitOptions.RemoveEmptyEntries);
                        foreach (var s in value)
                        {
                            XmlNode arrNode = xmlDoc.CreateElement("entry");
                            if (row[i].MyType == SupportedType.BoolArray)
                            {
                                var val = s.ToLower();
                                if (val == "1")
                                    val = "true";
                                if (val == "0")
                                    val = "false";
                                arrNode.InnerText = val;
                            }
                            else
                                arrNode.InnerText = s;

                            colNode.AppendChild(arrNode);
                        }
                    }
                    else
                    {
                        colNode.InnerText = row[i].CellValueString;
                    }

                    rowNode.AppendChild(colNode);
                }
                curRow++;
            }

            string retstring;
            using (var stringWriter = new StringWriter())
            {
                using (var xmlTextWriter = new XmlTextWriter(stringWriter))
                {
                    xmlTextWriter.Formatting = Formatting.Indented;
                    xmlDoc.WriteTo(xmlTextWriter);
                    retstring = stringWriter.ToString();
                }
            }

            return retstring;
        }
        public static string ExportJsonObjectString(Google2uWorksheet in_sheet, Google2uExportOptions in_options, bool in_newlines)
        {
            var indent = 0;
            var retString = String.Empty;
            var escapeUnicode = in_options.EscapeUnicode;
            var bConvertArrays = !in_options.JSONCellArrayToString;

            if (in_options.JSONExportType == Google2uExportOptions.ExportType.ExportObject)
            {
                retString += Indent(indent, "{");

                if (in_newlines)
                {
                    retString += Environment.NewLine;
                    indent++;
                }

                retString += Indent(indent, ("\"" + SanitizeJson(in_sheet.WorksheetName, escapeUnicode) + "Row\":"));
                    // "sheetName":

                if (in_newlines)
                {
                    retString += Environment.NewLine;
                }

            }

            retString += Indent(indent, "["); // [

            if (in_newlines)
            {
                retString += Environment.NewLine;
                indent++;
            }

            var rowCt = in_sheet.Rows.Count;
            if (rowCt > 0)
            {

                var curRow = 0;
                var validRow = false;

                // Iterate through each row, printing its cell values.
                foreach (var row in in_sheet.Rows)
                {
                    // if we are skipping the type row, record the types and increment curRow now
                    if (curRow == 0 || (curRow == 1 && in_sheet.UseTypeRow))
                    {
                        curRow++;
                        continue;
                    }

                    var rowType = row[0].GetTypeFromValue();
                    var rowHeader = row[0].CellValueString;
                    if (string.IsNullOrEmpty(rowHeader))
                    // if this header is empty
                    {
                        if (in_options.JSONCullRows)
                            break;
                        curRow++;
                        continue;
                    }

                    if (rowType == SupportedType.Void ||
                    rowHeader.Equals("void", StringComparison.InvariantCultureIgnoreCase))
                    // if this cell is void, then skip the row completely
                    {
                        curRow++;
                        continue;
                    }

                    if (validRow)
                    {
                        retString += ",";
                        if (in_newlines)
                        {
                            retString += Environment.NewLine;
                        }
                    }

                    validRow = true;

                    retString += Indent(indent, "{");
                    if (in_newlines)
                    {
                        retString += Environment.NewLine;
                        indent++;
                    }

                    bool firstCell = true;
                    // Iterate over the remaining columns, and print each cell value
                    for (int i = 0; i < in_sheet.Rows[0].Count; i++)
                    {
                        // Don't process rows or columns marked for ignore
                        if ((row[i].MyType == SupportedType.Void ||
                             string.IsNullOrEmpty(row[0].CellValueString) ||
                             (in_options.JSONCullColumns && i > in_sheet.FirstBlankCol)))
                        {
                            continue;
                        }

                        if (firstCell)
                            firstCell = false;
                        else
                        {
                            retString += ", ";
                            if (in_newlines)
                                retString += Environment.NewLine;
                        }

                        var myType = in_sheet.Rows[0].Cells[i].MyType;

                        if (IsComplexType(myType))
                        {
                            retString += Indent(indent,
                                "\"" + SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) + "\":");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            retString += Indent(indent, "[");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            var complexTypeDelim = in_options.DelimiterOptions[in_options.ComplexTypeDelimiters].ToCharArray();
                            var value = row[i].CellValueString.Split(complexTypeDelim, StringSplitOptions.RemoveEmptyEntries);
                            var ct = 0;
                            foreach (var s in value)
                            {
                                retString += Indent(indent, SanitizeJson(s, escapeUnicode));

                                if (ct < value.Length - 1)
                                {
                                    retString += ",";
                                    if (in_newlines)
                                    {
                                        retString += Environment.NewLine;
                                    }
                                }
                                ct++;
                            }

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent--;
                            }
                            retString += Indent(indent, "]");

                            if (in_newlines)
                            {
                                indent--;
                            }

                        }
                        else 
                        if(IsComplexArrayType(myType))
                        {
                            retString += Indent(indent,
                                "\"" + SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) + "\":");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            retString += Indent(indent, "[");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            var complexArrayDelim = in_options.DelimiterOptions[in_options.ComplexArrayDelimiters].ToCharArray();
                            var complexArray = row[i].CellValueString.Split(complexArrayDelim, StringSplitOptions.RemoveEmptyEntries);
                            var ctArray = 0;
                            foreach (var cv in complexArray)
                            {
                                if (in_newlines)
                                {
                                    retString += Environment.NewLine;
                                    indent++;
                                }

                                retString += Indent(indent, "[");

                                if (in_newlines)
                                {
                                    retString += Environment.NewLine;
                                    indent++;
                                }

                                var complexTypeDelim = in_options.DelimiterOptions[in_options.ComplexTypeDelimiters].ToCharArray();
                                var complexType = cv.Split(complexTypeDelim, StringSplitOptions.RemoveEmptyEntries);
                                var ctValue = 0;
                                foreach (var s in complexType)
                                {
                                    retString += Indent(indent, SanitizeJson(s, escapeUnicode));

                                    if (ctValue < complexType.Length - 1)
                                    {
                                        retString += ",";
                                        if (in_newlines)
                                        {
                                            retString += Environment.NewLine;
                                        }
                                    }
                                    ctValue++;
                                }

                                if (in_newlines)
                                {
                                    retString += Environment.NewLine;
                                    indent--;
                                }
                                retString += Indent(indent, "]");

                                if (in_newlines)
                                {
                                    indent--;
                                }

                                if (ctArray < complexArray.Length - 1)
                                {
                                    retString += ",";
                                    if (in_newlines)
                                    {
                                        retString += Environment.NewLine;
                                    }
                                }
                                ctArray++;

                            }

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent--;
                            }
                            retString += Indent(indent, "]");

                            if (in_newlines)
                            {
                                indent--;
                            }

                        }
                        else
                        if (bConvertArrays && IsSupportedArrayType(myType))
                        {

                            var delim = in_options.DelimiterOptions[in_options.ArrayDelimiters].ToCharArray();

                            retString += Indent(indent,
                                "\"" + SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) + "\":");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            retString += Indent(indent, "[");

                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent++;
                            }

                            bool isString = false;

                            if (row[i].MyType == SupportedType.StringArray)
                            {
                                delim = in_options.DelimiterOptions[in_options.StringArrayDelimiters].ToCharArray();
                                isString = true;
                            }
                            if (i == 0)
                                isString = true;

                            var value = row[i].CellValueString.Split(delim, System.StringSplitOptions.RemoveEmptyEntries);
                            var ct = 0;
                            foreach (var s in value)
                            {
                                if (isString)
                                {
                                    retString += Indent(indent, "\"" + SanitizeJson(s, escapeUnicode) + "\"");
                                }
                                else if (in_sheet.Rows[0].Cells[i].MyType == SupportedType.BoolArray)
                                {
                                    string val = s.ToLower();
                                    if (val == "1")
                                        val = "true";
                                    if (val == "0")
                                        val = "false";
                                    retString += Indent(indent, SanitizeJson(val, escapeUnicode));
                                }
                                else
                                    retString += Indent(indent, SanitizeJson(s, escapeUnicode));

                                if (ct < value.Length - 1)
                                {
                                    retString += ",";
                                    if (in_newlines)
                                    {
                                        retString += Environment.NewLine;
                                    }
                                }
                                ct++;
                            }
                            if (in_newlines)
                            {
                                retString += Environment.NewLine;
                                indent--;
                            }
                            retString += Indent(indent, "]");

                            if (in_newlines)
                            {
                                indent--;
                            }
                        }
                        else
                        {
                            if (in_sheet.UseTypeRow == false ||
                                in_sheet.Rows[0].Cells[i].MyType == SupportedType.String || (i == 0))
                            {
                                retString += Indent(indent, "\"" +
                                              SanitizeJson(in_sheet.Rows[0][i].CellValueString, escapeUnicode) +
                                              "\":\"" +
                                              SanitizeJson(row[i].CellValueString, escapeUnicode) + "\"");
                            }
                            else if (in_sheet.Rows[0].Cells[i].MyType == SupportedType.Bool)
                            {
                                string val = row[i].CellValueString.ToLower();
                                if (val == "1")
                                    val = "true";
                                if (val == "0")
                                    val = "false";
                                retString += Indent(indent, "\"" +
                                                            SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                escapeUnicode) +
                                                            "\":" +
                                                            SanitizeJson(val, escapeUnicode));
                            }

                            else if (in_sheet.Rows[0].Cells[i].MyType == SupportedType.BoolArray)
                            {
                                string val = row[i].CellValueString.ToLower();
                                if (val == "1")
                                    val = "true";
                                if (val == "0")
                                    val = "false";
                                retString += Indent(indent, "\"" +
                                                            SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                escapeUnicode) +
                                                            "\":" +
                                                            SanitizeJson(val, escapeUnicode));
                            }
                            else
                                retString += Indent(indent, "\"" +
                                                            SanitizeJson(in_sheet.Rows[0][i].CellValueString,
                                                                escapeUnicode) +
                                                            "\":" +
                                                            SanitizeJson(row[i].CellValueString, escapeUnicode) + "");
                        }

                        if (in_newlines)
                        {
                            //retString += Environment.NewLine;
                        }


                    }

                    if (in_newlines)
                    {
                        retString += Environment.NewLine;
                        indent--;
                    }

                    retString += Indent(indent, "}");

                    curRow++;
                }

            }

            if (in_newlines)
            {
                retString += Environment.NewLine;
                indent--;
            }
            retString += Indent(indent, "]");

            if (in_options.JSONExportType == Google2uExportOptions.ExportType.ExportObject)
            {
                if (in_newlines)
                {
                    retString += Environment.NewLine;
                    indent--;
                }
                retString += ("}");
            }
            return retString;
        }