public void parse_ini_string_with_custom_configuration() { var parser = new IniDataParser(); IniParser.Model.Configuration.IniParserConfiguration config = parser.Configuration; config.CommentString = "#"; config.SectionStartChar = '<'; config.SectionEndChar = '>'; IniData data = parser.Parse(iniFileStrCustom); Assert.That(data, Is.Not.Null); Assert.That(data.Sections.Count, Is.EqualTo(2)); var section1 = data.Sections.GetSectionData("section1"); Assert.That(section1, Is.Not.Null); Assert.That(section1.SectionName, Is.EqualTo("section1")); Assert.That(section1.Comments, Is.Not.Empty); Assert.That(section1.Comments.Count, Is.EqualTo(1)); Assert.That(section1.Keys, Is.Not.Null); Assert.That(section1.Keys.Count, Is.EqualTo(2)); Assert.That(section1.Keys.GetKeyData("key1"), Is.Not.Null); Assert.That(section1.Keys["key1"], Is.EqualTo("value1")); Assert.That(section1.Keys.GetKeyData("key2"), Is.Not.Null); Assert.That(section1.Keys["key2"], Is.EqualTo("value5")); }
public bool Bake(PipelineBakeContext context) { var configFile = context.Content as ConfigFile; var zoowriter = context.BakedWriter; var path = context.Depends["source"]; var iniConfig = new IniParser.Model.Configuration.IniParserConfiguration() { CaseInsensitive = true }; var iniParser = new IniParser.Parser.IniDataParser(iniConfig); FileIniDataParser fileIniData = new FileIniDataParser(iniParser); IniData parsedData = fileIniData.ReadFile(path); //foreach (var key in parsedData.Global) var ms = new MemoryStream(); var bw = new BinaryWriter(ms); int count = 0; foreach (var mfi in configFile.reflectionData.Values) { string val; bool has = parsedData.TryGetKey(mfi.FieldInfo.Name, out val); if (!has) { continue; } switch (mfi.Type) { case ConfigFile.FieldType.String: DumpValue(bw, mfi); mfi.FieldInfo.SetValue(this, val); count++; break; case ConfigFile.FieldType.Int32: { int temp; if (int.TryParse(val, out temp)) { count++; DumpValue(bw, mfi); bw.Write(temp); } break; } case ConfigFile.FieldType.Float: { float temp; if (float.TryParse(val, out temp)) { count++; DumpValue(bw, mfi); bw.Write(temp); } break; } } } bw.Flush(); zoowriter.Write(count); zoowriter.Write(ms.ToArray()); return(true); }
private string ParseFile(string Filename) { bool UseCustomComboColour = false; List <string> IniValues = new List <string>(); string IniDataFile = File.ReadAllText(Filename); var parser = new IniDataParser(); IniParser.Model.Configuration.IniParserConfiguration config = parser.Configuration; config.KeyValueAssigmentChar = Convert.ToChar(":"); config.CommentString = "//"; config.SkipInvalidLines = true; config.AllowDuplicateSections = true; config.AllowDuplicateKeys = true; IniData data = parser.Parse(IniDataFile); // Loop to get all General Keys for (int i = 0; i < 19; i++) { string s = data["General"][GeneralSection[i, 0]]; if (s != null) { s = FormatString(s); } else { s = GeneralSection[i, 1]; } IniValues.Add(s); } // Loop to get all Colours Keys for (int i = 0; i < 17; i++) { string s = data["Colours"][ColoursSection[i, 0]]; // if Combo1 is given within Skin.ini it Ignores the Defaults for Combo2 to Combo4 if ((i == 0) && !string.IsNullOrEmpty(s)) { UseCustomComboColour = true; } if (s != null) { s = FormatString(s); } else { if (i > 0 && i <= 7 && UseCustomComboColour) { s = ""; } else { s = ColoursSection[i, 1]; } } IniValues.Add(s); } for (int i = 0; i < 6; i++) { string s = data["Fonts"][FontsSection[i, 0]]; if (s != null) { s = FormatString(s); } else { s = FontsSection[i, 1]; } IniValues.Add(s); } return(InsertInJSONClass(IniValues)); }