コード例 #1
0
ファイル: EngineConfigs.cs プロジェクト: mr-kelly/KEngine
        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);
                }
            }
        }
コード例 #2
0
ファイル: Issue15Tests.cs プロジェクト: ststeiger/ini-parser
        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"));

        }
コード例 #3
0
        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;
        }
コード例 #4
0
        public IniData ParseWebsiteHostFile(string content)
        {
            var parser          = new IniParser.Parser.IniDataParser();
            var websiteHostFile = parser.Parse(content);

            return(websiteHostFile);
        }
コード例 #5
0
ファイル: ParserTests.cs プロジェクト: ststeiger/ini-parser
        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"));
        }
コード例 #6
0
 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"];
 }
コード例 #7
0
        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"));
            }
        }
コード例 #8
0
ファイル: Issue43Tests.cs プロジェクト: hagish/ini-parser
        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);
        }
コード例 #9
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();
        }
コード例 #10
0
ファイル: Issue4Tests.cs プロジェクト: hagish/ini-parser
        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"));
        }
コード例 #11
0
ファイル: Issue27Tests.cs プロジェクト: hagish/ini-parser
        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"));
        }
コード例 #12
0
        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"));
        }
コード例 #13
0
ファイル: MergeIniFiles.cs プロジェクト: GWIian/ini-parser
        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"));
            }

        }
コード例 #14
0
ファイル: Issue17Tests.cs プロジェクト: hagish/ini-parser
        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"));
        }
コード例 #15
0
        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);
        }
コード例 #16
0
ファイル: Issue19Tests.cs プロジェクト: ststeiger/ini-parser
        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"));
        }
コード例 #17
0
ファイル: Issue14Tests.cs プロジェクト: hagish/ini-parser
        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"));
        }
コード例 #18
0
    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);
    }
コード例 #19
0
    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)) : ""
                                ));
        }
    }
コード例 #20
0
        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"));
        }
コード例 #21
0
        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();
        }
コード例 #22
0
        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"));

        }
コード例 #23
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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"));
        }
コード例 #24
0
        public void escape_comment_regex_special_characters()
        {
            var iniStr = @"[Section]
                \Backslash Bcomment
                Key=Value";
         
            var parser = new IniDataParser();
            parser.Configuration.CommentString = @"\";

            parser.Parse(iniStr);
        }
コード例 #25
0
        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"));
        }
コード例 #26
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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);

        }
コード例 #27
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
		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);
		}
コード例 #28
0
        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);
        }
コード例 #29
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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));

        }
コード例 #30
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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"));
        }
コード例 #31
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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"));

        }
コード例 #32
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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"));
        }
コード例 #33
0
ファイル: ParserTests.cs プロジェクト: GWIian/ini-parser
        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));
            }

        }
コード例 #34
0
        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));
        }
コード例 #35
0
        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;
        }
コード例 #36
0
        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);
        }