public EngineConfigs(string customConfigs) { var parser = new IniDataParser(); _iniData = parser.Parse(DefaultEngineConfigs); if (!string.IsNullOrEmpty(customConfigs)) { if (customConfigs.Trim() != "") { var userIniData = parser.Parse(customConfigs); _iniData.Merge(userIniData); } } }
public void allow_duplicated_sections_in_section() { string data = @"[123_1] key1=value1 key2=value2 [123_2] key3 = value3 [123_1] key4=value4"; var parser = new IniDataParser(); parser.Configuration.AllowDuplicateKeys = true; parser.Configuration.AllowDuplicateSections = true; parser.Configuration.AllowKeysWithoutSection = true; var iniData = parser.Parse(data); Assert.That(iniData.Sections.ContainsSection("123_1"), Is.True); Assert.That(iniData.Sections.ContainsSection("123_2"), Is.True); Assert.That(iniData.Sections.GetSectionData("123_1").Keys, Has.Count(3)); Assert.That(iniData["123_1"]["key4"], Is.EqualTo("value4")); }
public Configuration ParseConfiguration(string configuration) { var parser = new IniDataParser(); var data = parser.Parse(configuration); var config = new Configuration(); foreach (var section in data.Sections) { var innerConfig = new Configuration(); foreach (var key in section.Keys) { innerConfig[RemoveWhiteSpace(key.KeyName)] = key.Value; } config[RemoveWhiteSpace(section.SectionName)] = innerConfig; } foreach (var key in data.Global) { config[RemoveWhiteSpace(key.KeyName)] = key.Value; } return config; }
public IniData ParseWebsiteHostFile(string content) { var parser = new IniParser.Parser.IniDataParser(); var websiteHostFile = parser.Parse(content); return(websiteHostFile); }
public void parse_ini_string_with_custom_configuration() { var parser = new IniDataParser(); IniParser.Model.Configuration.IIniParserConfiguration 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 static string GetUsernameFromHgrc(string repoPath) { var hgrc = Path.Combine(repoPath, ".hg", "hgrc"); var parser = new IniDataParser(); var iniData = parser.Parse(File.ReadAllText(hgrc)); return iniData["ui"]["username"]; }
public void merge_multiple_inis() { var parser = new IniDataParser(); parser.Configuration.OverrideDuplicateKeys = true; parser.Configuration.AllowDuplicateKeys = true; parser.Configuration.AllowDuplicateSections = true; IniData data = parser.Parse(iniFileStrA); Assert.That(data, Is.Not.Null); { // first file Assert.That(data.Global["g"], Is.EqualTo("1")); Assert.That(data.Sections.Count, Is.EqualTo(2), "Expected two (2) sections"); var s0 = data.Sections.GetSectionData("s0"); Assert.That(s0, Is.Not.Null); Assert.That(s0.SectionName, Is.EqualTo("s0")); Assert.That(s0.Keys["a"], Is.EqualTo("2")); var s1 = data.Sections.GetSectionData("s1"); Assert.That(s1, Is.Not.Null); Assert.That(s1.SectionName, Is.EqualTo("s1")); Assert.That(s1.Keys["a"], Is.EqualTo("3")); Assert.That(s1.Keys["b"], Is.EqualTo("4")); } parser.ParseInto(iniFileStrB, data); { // merged files Assert.That(data.Global["g"], Is.EqualTo("11")); Assert.That(data.Global["j"], Is.EqualTo("a")); Assert.That(data.Sections.Count, Is.EqualTo(3), "Expected two (3) sections"); var s0 = data.Sections.GetSectionData("s0"); Assert.That(s0, Is.Not.Null); Assert.That(s0.SectionName, Is.EqualTo("s0")); Assert.That(s0.Keys["a"], Is.EqualTo("22")); Assert.That(s0.Keys["b"], Is.EqualTo("44")); var s1 = data.Sections.GetSectionData("s1"); Assert.That(s1, Is.Not.Null); Assert.That(s1.SectionName, Is.EqualTo("s1")); Assert.That(s1.Keys["a"], Is.EqualTo("3")); Assert.That(s1.Keys["b"], Is.EqualTo("4")); var s2 = data.Sections.GetSectionData("s2"); Assert.That(s2, Is.Not.Null); Assert.That(s2.SectionName, Is.EqualTo("s2")); Assert.That(s2.Keys["c"], Is.EqualTo("55")); } }
public void commentchar_property_works() { var parser = new IniDataParser(); parser.Configuration.CommentChar = '#'; var result = parser.Parse(initest); Assert.That(result.Sections.GetSectionData("seccion1").Comments.Count > 0); }
static void Main() { LogFile.WriteLine("main", "читаем конфиг"); IniParser.Parser.IniDataParser aa = new IniParser.Parser.IniDataParser(); Tables.ADVERTISMENT = aa.Parse(File.ReadAllText("config.ini"))["db"]["ADVERTISMENT"].ToString(); Tables.ARTICLES = aa.Parse(File.ReadAllText("config.ini"))["db"]["ARTICLES"].ToString(); Tables.AUTHORS = aa.Parse(File.ReadAllText("config.ini"))["db"]["AUTHORS"].ToString(); Tables.BALANCE = aa.Parse(File.ReadAllText("config.ini"))["db"]["BALANCE"].ToString(); Tables.CATEGORIES = aa.Parse(File.ReadAllText("config.ini"))["db"]["CATEGORIES"].ToString(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); SQLClass.OpenConnection(); Application.Run(new GhostMainForm()); SQLClass.CloseConnection(); }
public void allow_duplicated_keys_in_section() { var parser = new IniDataParser(); parser.Configuration.AllowDuplicateKeys = true; IniData data = parser.Parse(ini_duplicated_keys); Assert.That(data, Is.Not.Null); Assert.That(data.Sections.GetSectionData("seccion1").Keys.Count, Is.EqualTo(1)); Assert.That(data.Sections.GetSectionData("seccion1").Keys["value1"], Is.EqualTo("10.6")); }
public void allow_backslashes_in_sections() { string data = @"[section\subsection] key=value"; IniDataParser parser = new IniDataParser(); IniData parsedData = parser.Parse(data); Assert.That(parsedData.Sections.ContainsSection("section\\subsection")); Assert.That(parsedData.Sections["section\\subsection"]["key"], Is.EqualTo("value")); }
public void check_data_correctly_parsed() { var parser = new IniDataParser(); IniData data = parser.Parse(iniFileStr); Assert.That(data, Is.Not.Null); // Check global section Assert.That(data.Global["global key"], Is.EqualTo("global value")); // global section is not computed when counting the number of sections in the // ini Assert.That(data.Sections.Count, Is.EqualTo(2),"Expected two (2) sections"); var section1 = data.Sections.GetSectionData("section1"); Assert.That(section1, Is.Not.Null); Assert.That(section1.SectionName, Is.EqualTo("section1")); Assert.That(section1.LeadingComments, Is.Not.Empty); Assert.That(section1.LeadingComments.Count, Is.EqualTo(1)); Assert.That(section1.Keys, Is.Not.Null); Assert.That(section1.Keys.Count, Is.EqualTo(2)); Assert.That(section1.Keys.GetKeyData("key 1"), Is.Not.Null); // Check keys / values with spaces. Leading & trailing whitespace ignored Assert.That(section1.Keys["key 1"], Is.EqualTo("value 1")); Assert.That(section1.Keys.GetKeyData("key;2"), Is.Not.Null); // Check special characters as part of the key/value name Assert.That(section1.Keys["key;2"], Is.EqualTo("va:lu;e.5")); // var section2 = data.Sections.GetSectionData("section2"); // Bad section name Assert.That(section2, Is.Null); // Beware: leading and trailing whitespaces are ignored! section2 = data.Sections.GetSectionData("section 2"); Assert.That(section2, Is.Not.Null); Assert.That(section2.SectionName, Is.EqualTo("section 2")); Assert.That(section2.LeadingComments, Is.Empty); Assert.That(section2.TrailingComments, Is.Not.Empty); Assert.That(section2.Comments, Is.Not.Empty); // Check comments at the end of the section are parsed and assigned to the section Assert.That(section2.TrailingComments.Count, Is.EqualTo(1)); Assert.That(section2.TrailingComments[0], Is.EqualTo("comment for section2")); }
public void merge_parsed_ini_files() { var parser = new IniDataParser(); IniData dataA = parser.Parse(iniFileStrA); IniData dataB = parser.Parse(iniFileStrB); dataA.Merge(dataB); { // merged files Assert.That(dataA.Global["g"], Is.EqualTo("11")); Assert.That(dataA.Global["j"], Is.EqualTo("a")); Assert.That(dataA.Sections.Count, Is.EqualTo(3), "Expected two (3) sections"); var s0 = dataA.Sections.GetSectionData("s0"); Assert.That(s0, Is.Not.Null); Assert.That(s0.SectionName, Is.EqualTo("s0")); Assert.That(s0.Keys["a"], Is.EqualTo("22")); Assert.That(s0.Keys["b"], Is.EqualTo("44")); var s1 = dataA.Sections.GetSectionData("s1"); Assert.That(s1, Is.Not.Null); Assert.That(s1.SectionName, Is.EqualTo("s1")); Assert.That(s1.Keys["a"], Is.EqualTo("3")); Assert.That(s1.Keys["b"], Is.EqualTo("4")); var s2 = dataA.Sections.GetSectionData("s2"); Assert.That(s2, Is.Not.Null); Assert.That(s2.SectionName, Is.EqualTo("s2")); Assert.That(s2.Keys["c"], Is.EqualTo("55")); } }
public void check_can_parse_special_characters_in_section_names() { string data = @"[{E3729302-74D1-11D3-B43A-00AA00CAD128}] key = value"; var parser = new IniDataParser(); IniData iniData = parser.Parse(data); Assert.That(iniData.Sections.Count, Is.EqualTo(1)); Assert.That(iniData.Sections.ContainsSection("{E3729302-74D1-11D3-B43A-00AA00CAD128}"), Is.True); Assert.That(iniData.Sections["{E3729302-74D1-11D3-B43A-00AA00CAD128}"].ContainsKey("key"), Is.True); Assert.That(iniData.Sections["{E3729302-74D1-11D3-B43A-00AA00CAD128}"]["key"], Is.EqualTo("value")); }
public void ReflectionConfigGenerator_GenerateConfigFile_LoadFromFile() { var file = generator.GenerateConfigFile(new ReflectionConfigGenerator.GeneratorConfig() { Type = typeof(ConfigTest) }); var text = File.ReadAllText(TestContext.CurrentContext.TestDirectory + "/config.ini"); var parser = new IniParser.Parser.IniDataParser(); var data = parser.Parse(text); file.PullFrom(data); Assert.AreEqual(" ", ConfigTest.Test); Assert.AreEqual(0, ConfigTest.Testing.Length); Assert.AreEqual(112, ConfigTest.Test2); }
public void allow_whitespace_in_section_names() { string data = @"[Web Colaboration] key = value"; var parser = new IniDataParser(); IniData iniData = parser.Parse(data); Assert.That(iniData.Sections.Count, Is.EqualTo(1)); Assert.That(iniData.Sections.ContainsSection("Web Colaboration"), Is.True); Assert.That(iniData.Sections["Web Colaboration"].ContainsKey("key"), Is.True); Assert.That(iniData.Sections["Web Colaboration"]["key"], Is.EqualTo("value")); }
public void check_can_read_keys_with_no_section() { string data = @"key1=value1 key2=value2 key3=value3"; var parser = new IniDataParser(); IniData iniData = parser.Parse(data); Assert.That(iniData.Global.Count, Is.EqualTo(3)); Assert.That(iniData.Global["key1"], Is.EqualTo("value1")); Assert.That(iniData.Global["key2"], Is.EqualTo("value2")); Assert.That(iniData.Global["key3"], Is.EqualTo("value3")); }
public static T Read <T>(string section, string filepath) where T : class { if (!File.Exists(filepath)) { return(null); } T ret = (T)Activator.CreateInstance(typeof(T)); var parser = new IniParser.Parser.IniDataParser(); var config = parser.Parse(File.ReadAllText(filepath)); var sectionData = config.Sections[section]; foreach (var n in typeof(T).GetFields()) { if (n.FieldType == typeof(int)) { if (sectionData.ContainsKey(n.Name)) { var value = sectionData[n.Name]; n.SetValue(ret, int.Parse(value)); } } else if (n.FieldType == typeof(bool)) { if (sectionData.ContainsKey(n.Name)) { var value = sectionData[n.Name]; n.SetValue(ret, bool.Parse(value)); } } else if (n.FieldType == typeof(string)) { if (sectionData.ContainsKey(n.Name)) { var value = sectionData[n.Name]; n.SetValue(ret, value); } } } return(ret); }
private void ParseINI(string iniText) { var parser = new IniParser.Parser.IniDataParser(); this.iniData = parser.Parse(iniText); foreach (SectionData block in iniData.Sections) { string blockId = block.Keys["ID"]; if (blockId == null) { blockId = block.Keys["id"]; } this.blocks.Add(new BlockInfo( block, (blockId != null) ? this.GetIniBlockType(Convert.ToInt32(blockId)) : "" )); } }
public void parse_ini_string_with_default_configuration() { var parser = new IniDataParser(); IniData data = parser.Parse(iniFileStr); 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.LeadingComments, Is.Not.Empty); Assert.That(section1.LeadingComments.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")); }
static void Main() { LogFile.WriteLine("main", "читаем конфиг"); proces = "читаем конфиг"; IniParser.Parser.IniDataParser aa = new IniParser.Parser.IniDataParser(); Tables.ADVERTISMENT = aa.Parse(File.ReadAllText("config.ini"))["db"]["ADVERTISMENT"].ToString(); Tables.ARTICLES = aa.Parse(File.ReadAllText("config.ini"))["db"]["ARTICLES"].ToString(); Tables.AUTHORS = aa.Parse(File.ReadAllText("config.ini"))["db"]["AUTHORS"].ToString(); Tables.BALANCE = aa.Parse(File.ReadAllText("config.ini"))["db"]["BALANCE"].ToString(); Tables.CATEGORIES = aa.Parse(File.ReadAllText("config.ini"))["db"]["CATEGORIES"].ToString(); Tables.COLLECTION = aa.Parse(File.ReadAllText("config.ini"))["db"]["COLLECTION"].ToString(); Tables.LIKES = aa.Parse(File.ReadAllText("config.ini"))["db"]["LIKES"].ToString(); Tables.POLZOVATELI = aa.Parse(File.ReadAllText("config.ini"))["db"]["POLZOVATELI"].ToString(); Tables.PROMO_CATEGORIES_LINK = aa.Parse(File.ReadAllText("config.ini"))["db"]["PROMO_CATEGORIES_LINK"].ToString(); Tables.READ_OF_ARTICLES = aa.Parse(File.ReadAllText("config.ini"))["db"]["READ_OF_ARTICLES"].ToString(); Tables.SETTINGS = aa.Parse(File.ReadAllText("config.ini"))["db"]["SETTINGS"].ToString(); Tables.UNIQUE = aa.Parse(File.ReadAllText("config.ini"))["db"]["UNIQUE"].ToString(); Tables.DEFAULT = aa.Parse(File.ReadAllText("config.ini"))["db"]["DEFAULT"].ToString(); Configs.ReadTableNames(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 s = new Form1(); s.Show(); SQLClass.OpenConnection(); Application.Run(new GhostMainForm()); SQLClass.CloseConnection(); }
public void simple_configuration() { var iniStr = @"[section1] #data = 1 ;data = 2"; var config = new DefaultIniParserConfiguration(); config.CommentString = "#"; _parser = new IniDataParser(config); var iniData = _parser.Parse(iniStr); Assert.That(iniData["section1"][";data"], Is.EqualTo("2")); }
public void allow_skiping_unparsable_lines() { string data = @"win] key1 = value1"; var parser = new IniDataParser(); parser.Configuration.SkipInvalidLines = true; IniData newData = parser.Parse(data); Assert.That(newData.Global["key1"], Is.EqualTo("value1")); }
public void escape_comment_regex_special_characters() { var iniStr = @"[Section] \Backslash Bcomment Key=Value"; var parser = new IniDataParser(); parser.Configuration.CommentString = @"\"; parser.Parse(iniStr); }
public void escape_section_regex_special_characters() { var iniStr = @"\section\ ;comment key=value"; var parser = new IniDataParser(); parser.Configuration.SectionStartChar = '\\'; parser.Configuration.SectionEndChar = '\\'; var iniData = parser.Parse(iniStr); Assert.That(iniData["section"]["key"], Is.EqualTo("value")); }
public void commentchar_property_works() { string initest = @"#comment1 [seccion1] #comment 2 #control value value1 = 10.6 value2 = 10"; var parser = new IniDataParser(); parser.Configuration.CommentChar = '#'; var result = parser.Parse(initest); Assert.That(result.Sections.GetSectionData("seccion1").Comments.Count > 0); }
public void allow_quotes_in_sections() { var parser = new IniDataParser(); var iniDataString = @"[W101 0.5"" wc] key = value [W103 0.5' wc] key2 = value2"; IniData parsedData = parser.Parse(iniDataString); Assert.That(parsedData.Sections["W101 0.5\" wc"], Is.Not.Empty); Assert.That(parsedData.Sections["W103 0.5' wc"], Is.Not.Empty); }
public static void InitializeHgRepo(string projectFolderPath) { Directory.CreateDirectory(projectFolderPath); RunHgCommand(projectFolderPath, "init ."); // We have to copy the ini file, otherwise Mercurial won't accept branches that // consists only of digits. string hgini = Path.Combine(TestEnvironment.FindGitRepoRoot(), "Mercurial", "mercurial.ini"); var hgrc = Path.Combine(projectFolderPath, ".hg", "hgrc"); File.Copy(hgini, hgrc); // Adjust hgrc file var parser = new IniDataParser(); var iniData = parser.Parse(File.ReadAllText(hgrc)); iniData["extensions"].AddKey("fixutf8", Path.Combine(TestEnvironment.FindGitRepoRoot(), "MercurialExtensions/fixutf8/fixutf8.py")); var contents = iniData.ToString(); File.WriteAllText(hgrc, contents); }
public void provides_a_list_of_errors() { string iniDataString = @";begin ;value value1 = test = test2 value1 = test3 "; var parser = new IniDataParser(); parser.Configuration.ThrowExceptionsOnError = false; parser.Configuration.AllowDuplicateKeys = false; var result = parser.Parse(iniDataString); Assert.That(result, Is.Null); Assert.That(parser.HasError, Is.True); Assert.That(parser.Errors, Has.Count.EqualTo(2)); }
public void check_using_another_leading_character_for_comments() { string data = @"[test] # a comment connectionString = Server=sqlserver.domain.com;Database=main;User ID=user;Password=password"; var parser = new IniDataParser(); parser.Configuration.CommentString = "#"; IniData iniData = parser.Parse(data); Assert.That( iniData["test"]["connectionString"], Is.EqualTo("Server=sqlserver.domain.com;Database=main;User ID=user;Password=password")); Assert.That( iniData["test"].GetKeyData("connectionString").Comments[0], Is.EqualTo(" a comment")); }
public void allow_asteriks_in_section_names() { #region really long ini string for the next issue string iniString = @"[SMSGW] WebAuth=No WebMenu=Yes WebPort=8800 ReceiveSMS=Yes ReceiveMMS=No ReceiveSMSCommand1=* http://192.168.1.3:8000/getnowsms/getsms.aspx?SENDER=@@SENDER@@&FULLSMS=@@FULLSMS@@&SMSPREFIX=@@SMSPREFIX@@&RECIP=@@RECEIP@@ No 13559710880 ReceiveSMSCommand2=* http://192.168.1.5:8002/writedb.ashx?sender=@@SENDER@@&FULLSMS=@@FULLSMS@@&RECEIPTMESSAGEID=@@RECEIPTMESSAGEID@@&MessageID=@@MessageID@@&IP=192.168.1.3&SMSCROUTE=@@SMSCROUTE@@ No ReceiveSMSCommand3=* http://192.168.1.88:8139/getsms.aspx?SENDER=@@SENDER@@&FULLSMS=@@FULLSMS@@&SMSPREFIX=@@SMSPREFIX@@&RECIP=@@RECEIP@@ No 13712998000 ReceiveSMSCharset=utf-8 PHPEnable=No PHPAllowRemote=No Modem16=COM10: Modem15=COM9: Modem14=COM8: Modem13=COM7: Modem12=COM6: Modem11=COM5: Modem10=COM4: Modem9=COM3: Modem8=COM18: Modem7=COM17: Modem6=COM16: Modem5=COM15: Modem4=COM14: Modem3=COM13: Modem2=COM12: Modem1=COM11: Modem17=COM19: Modem18=COM20: Modem19=COM21: Modem20=COM22: Modem21=COM23: Modem22=COM24: Modem23=COM25: Modem24=COM26: Modem25=COM27: Modem26=COM28: Modem27=COM29: Modem28=COM30: Modem29=COM31: Modem30=COM32: Modem31=COM33: Modem32=COM34: Modem33=COM35: Modem34=COM36: Modem35=COM37: Modem36=COM38: Modem37=COM39: Modem38=COM40: Modem39=COM41: Modem40=COM42: Modem41=COM43: Modem42=COM44: Modem43=COM45: Modem44=COM46: Modem45=COM47: Modem46=COM48: Modem47=COM49: Modem48=COM50: [Modem - COM19:] PhoneNumber=13712998000 ReceiveSMS=Yes ReceiveMMS=No RoutePrefOnly=Yes [Modem - COM20:] PhoneNumber=13559710880 ReceiveSMS=Yes ReceiveMMS=No RoutePrefOnly=Yes [2Way-Keywords] Keyword1=*##13559710880 Keyword2=* Keyword3=*##13712998000 NewFormat=Yes [2Way-Keyword-*##13559710880] Run=http://192.168.1.5:9902/getsms.aspx?SENDER=@@SENDER@@&FULLSMS=@@FULLSMS@@&SMSPREFIX=@@SMSPREFIX@@&RECIP=@@RECEIP@@ [2Way-Keyword-*] Run=http://192.168.1.5:8002/writedb.ashx?sender=@@SENDER@@&FULLSMS=@@FULLSMS@@&RECEIPTMESSAGEID=@@RECEIPTMESSAGEID@@&MessageID=@@MessageID@@&IP=192.168.1.3&SMSCROUTE=@@SMSCROUTE@@ [2Way-Keyword-*##13712998000] Run=http://192.168.1.88:8139/getsms.aspx?SENDER=@@SENDER@@&FULLSMS=@@FULLSMS@@&SMSPREFIX=@@SMSPREFIX@@&RECIP=@@RECEIP@@ "; #endregion var parser = new IniDataParser(); var iniData = parser.Parse(iniString); Assert.That(iniData.Sections.ContainsSection("2Way-Keyword-*##13559710880")); }
public void allow_comments_at_end_of_sectionless_file() { string iniDataString = @" ;begin ;value value1 = test ;end "; var parser = new IniDataParser(); parser.Configuration.AllowKeysWithoutSection = true; var iniData = parser.Parse(iniDataString); Assert.That(iniData.Global.ContainsKey("value1")); Assert.That(iniData.Global.GetKeyData("value1").Comments, Has.Count.EqualTo(3)); Assert.That(iniData.Global.GetKeyData("value1").Comments[2], Is.EqualTo("end")); }
public void provides_error_data() { string iniDataString = @";begin ;value value1 = test = test2 value1 = test3 "; var parser = new IniDataParser(); parser.Configuration.ThrowExceptionsOnError = true; try { parser.Parse(iniDataString); } catch(ParsingException ex) { Assert.That(ex.LineNumber, Is.EqualTo(5)); Assert.That(parser.HasError, Is.True); Assert.That(parser.Errors, Has.Count.EqualTo(1)); } }
public void SaveSettings() { var settingsFile = Path.Combine(BasePath, "config.ini"); var parser = new IniDataParser(); IniData data = parser.Parse(""); data.Sections.AddSection("memcached"); data["memcached"].AddKey("ipaddress", _ipAddress); data["memcached"].AddKey("port", _port.ToString()); data["memcached"].AddKey("delimiter", _delimiter.ToString()); _parser.WriteFile(settingsFile, data); Logger.Log("Settings Saved", Logger.LogType.Info, typeof(Manager)); }
public static IniData ParseFiles(string defaultConfig, string globalConfigFilename) { var utf8 = new UTF8Encoding(false); var parserConfig = new IniParserConfiguration { // ThrowExceptionsOnError = false, CommentString = "#", SkipInvalidLines = true }; var parser = new IniDataParser(parserConfig); IniData result = parser.Parse(DefaultLfMergeSettings.DefaultIniText); string globalIni = File.Exists(globalConfigFilename) ? File.ReadAllText(globalConfigFilename, utf8) : ""; if (String.IsNullOrEmpty(globalIni)) { // TODO: Make all these Console.WriteLine calls into proper logging calls Console.WriteLine("Warning: no global configuration found. Will use default settings."); } IniData globalConfig; try { globalConfig = parser.Parse(globalIni); } catch (ParsingException e) { Console.WriteLine("Warning: Error parsing global configuration file. Will use default settings."); Console.WriteLine("Error follows: {0}", e.ToString()); globalConfig = null; // Merging null is perfectly acceptable to IniParser } result.Merge(globalConfig); foreach (KeyData item in result.Global) { // Special-case. Could be replaced with a more general regex if we end up using more variables, but YAGNI. if (item.Value.Contains("${HOME}")) { item.Value = item.Value.Replace("${HOME}", Environment.GetEnvironmentVariable("HOME")); } } return result; }
public static void CopyFwProjectTo(string projectCode, string destDir) { string dataDir = Path.Combine(FindGitRepoRoot(), "data"); DirectoryUtilities.CopyDirectory(Path.Combine(dataDir, projectCode), destDir); // Adjust hgrc file var hgrc = Path.Combine(destDir, projectCode, ".hg/hgrc"); if (File.Exists(hgrc)) { var parser = new IniDataParser(); var iniData = parser.Parse(File.ReadAllText(hgrc)); iniData["ui"]["username"] = Environment.UserName; var outputDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); iniData["merge-tools"]["chorusmerge.executable"] = Path.Combine(outputDirectory, "chorusmerge"); iniData["extensions"]["fixutf8"] = Path.Combine(FindGitRepoRoot(), "MercurialExtensions/fixutf8/fixutf8.py"); var contents = iniData.ToString(); File.WriteAllText(hgrc, contents); } Console.WriteLine("Copied {0} to {1}", projectCode, destDir); }