internal void LoadFullData() { if (m_IsLoaded) { return; } m_MultiGroupCache = new Dictionary <string, Dictionary <string, string> >(); using (StreamReader reader = new StreamReader(m_SourceFilePath)) { int groupCount = 0; Dictionary <string, string> currentGroupCache = null; while (!reader.EndOfStream) { string lineText = reader.ReadLine(); TextFileLineType lineType = getLineType(lineText); if (lineType == TextFileLineType.KeyValue) { if (currentGroupCache != null) { string[] arrlineParts = lineText.Split('='); currentGroupCache.Add(arrlineParts[0], arrlineParts[1]); } } else if (lineType == TextFileLineType.GroupHeader) { groupCount++; string groupName; int endIndex = lineText.IndexOf("]"); if (endIndex == 1) { groupName = ""; } groupName = lineText.Substring(1, endIndex - 1); currentGroupCache = new Dictionary <string, string>(); m_MultiGroupCache.Add(groupName, currentGroupCache); } } if (groupCount == 1) { m_SingleGroupCache = currentGroupCache; m_HasSingleGroup = true; } } m_IsLoaded = true; }
internal static TextLanguagePackage LoadOnlyWithNameAndCodeFromFile(string filePath) { using (StreamReader reader = new StreamReader(filePath)) { string lineText = null; TextFileLineType lineType = TextFileLineType.Unknown; //Read until file header while (!reader.EndOfStream) { lineText = reader.ReadLine(); lineType = getLineType(lineText); if (lineType == TextFileLineType.FileHeader) { break; } } if (lineType != TextFileLineType.FileHeader) { return(null); } string languageName = null; string languageCode = null; while (!reader.EndOfStream) { string nextKeyName; string nextKeyValue; if (readNextKey(reader, out nextKeyName, out nextKeyValue)) { if (nextKeyName == "Name") { languageName = nextKeyValue; } else if (nextKeyName == "Code") { languageCode = nextKeyValue; } if (languageName != null && languageCode != null) { break; } } } return(new TextLanguagePackage(filePath, languageCode, languageName)); } }
private static bool readNextKey(StreamReader reader, out string keyName, out string keyValue) { keyName = null; keyValue = null; while (!reader.EndOfStream) { string lineText = reader.ReadLine(); TextFileLineType lineType = getLineType(lineText); if (lineType == TextFileLineType.KeyValue) { string[] arrlineParts = lineText.Split('='); keyName = arrlineParts[0]; keyValue = arrlineParts[1]; return(true); } } return(false); }