예제 #1
0
		public void NormalSectionAndKey ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Logging]");
			writer.WriteLine (" great logger =   log4net  ");
			writer.WriteLine ("  [Pets] ; pets comment  ");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.AreEqual (IniReadState.Initial, reader.ReadState);
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniReadState.Interactive, reader.ReadState);
			Assert.AreEqual (IniType.Section, reader.Type);
			Assert.AreEqual ("Logging", reader.Name);
			Assert.AreEqual ("", reader.Value);
			Assert.IsNull (reader.Comment);
			
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniType.Key, reader.Type);
			Assert.AreEqual ("great logger", reader.Name);
			Assert.AreEqual ("log4net", reader.Value);
			Assert.AreEqual (null, reader.Comment);
			
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniType.Section, reader.Type);
			Assert.AreEqual ("Pets", reader.Name);
			Assert.AreEqual ("", reader.Value);
			Assert.IsNull (reader.Comment);
		}
예제 #2
0
		public void NormalComment ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("");
			writer.WriteLine (" ; Something"); 
			writer.WriteLine (" ;   Some comment  ");
			writer.WriteLine (" ;");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.AreEqual (IniReadState.Initial, reader.ReadState);
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniReadState.Interactive, reader.ReadState);
			Assert.AreEqual (IniType.Empty, reader.Type);
			Assert.AreEqual ("", reader.Name);
			Assert.AreEqual (null, reader.Comment);
			
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniType.Empty, reader.Type);
			Assert.AreEqual ("Something", reader.Comment);
			
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniType.Empty, reader.Type);
			Assert.AreEqual ("Some comment", reader.Comment);
			
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual ("", reader.Comment);
			
			Assert.IsFalse (reader.Read ());
		}
예제 #3
0
        public void CommentCharInString()
        {
            StringWriter writer = new StringWriter ();
            writer.WriteLine ("Value = \"WEB;www.google.com|WEB;www.yahoo.com\"");
            IniReader reader = new IniReader (new StringReader (writer.ToString ()));

            Assert.IsTrue (reader.Read ());
            Assert.AreEqual ("Value", reader.Name);
            Assert.AreEqual ("WEB;www.google.com|WEB;www.yahoo.com", reader.Value);
        }
예제 #4
0
        public void ConsumeAllKeyText()
        {
            StringWriter writer = new StringWriter ();
            writer.WriteLine ("email = \"John Smith\"; <*****@*****.**>");
            IniReader reader = new IniReader (new StringReader (writer.ToString ()));
            reader.ConsumeAllKeyText = true;

            Assert.IsTrue (reader.Read ());
            Assert.AreEqual ("email", reader.Name);
            Assert.AreEqual ("\"John Smith\"; <*****@*****.**>", reader.Value);
        }
예제 #5
0
        /// <summary>
        /// Loads the file not saving comments.
        /// </summary>
        private void LoadReader(IniReader reader)
        {
            reader.IgnoreComments = false;
            bool       sectionFound = false;
            IniSection section      = null;

            try {
                while (reader.Read())
                {
                    switch (reader.Type)
                    {
                    case IniType.Empty:
                        if (!sectionFound)
                        {
                            initialComment.Add(reader.Comment);
                        }
                        else
                        {
                            section.Set(reader.Comment);
                        }

                        break;

                    case IniType.Section:
                        sectionFound = true;
                        // If section already exists then overwrite it
                        if (sections[reader.Name] != null)
                        {
                            sections.Remove(reader.Name);
                        }
                        section = new IniSection(reader.Name, reader.Comment);
                        sections.Add(section);

                        break;

                    case IniType.Key:
                        if (section.GetValue(reader.Name) == null)
                        {
                            section.Set(reader.Name, reader.Value, reader.Comment);
                        }
                        break;
                    }
                }
            } catch (Exception ex) {
                throw ex;
            } finally {
                // Always close the file
                reader.Close();
            }
        }
예제 #6
0
        public void AcceptNoKeyEndings()
        {
            StringWriter writer = new StringWriter ();
            writer.WriteLine ("[Mysql]");
            writer.WriteLine ("quick");
            writer.WriteLine (" my key = new key");
            IniReader reader = new IniReader (new StringReader (writer.ToString ()));

            reader.AcceptNoAssignmentOperator = true;

            Assert.IsTrue (reader.Read ());
            Assert.IsTrue (reader.Read ());
            Assert.AreEqual ("quick", reader.Name);
            Assert.AreEqual ("", reader.Value);
        }
예제 #7
0
        public void CommentAfterKey()
        {
            StringWriter writer = new StringWriter ();
            writer.WriteLine ("[Test]");
            writer.WriteLine (" option = someValue ; some comment");
            writer.WriteLine ("");

            IniReader reader = new IniReader
                (new StringReader (writer.ToString ()));
            reader.AcceptCommentAfterKey = true;

            Assert.IsTrue (reader.Read ());
            Assert.IsTrue (reader.Read ());
            Assert.AreEqual ("someValue", reader.Value);
            Assert.AreEqual ("some comment", reader.Comment);
            Assert.IsTrue (reader.Read ());
        }
예제 #8
0
        /// <summary>
        /// Returns a proper INI reader depending upon the type parameter.
        /// </summary>
        private IniReader GetIniReader(TextReader reader, IniFileType type)
        {
            IniReader result = new IniReader(reader);

            switch (type)
            {
            case IniFileType.Standard:
                // do nothing
                break;

            case IniFileType.PythonStyle:
                result.AcceptCommentAfterKey = false;
                result.SetCommentDelimiters(new char[] { ';', '#' });
                result.SetAssignDelimiters(new char[] { ':' });
                break;

            case IniFileType.MercurialStyle:
                result.AcceptCommentAfterKey = false;
                result.SetCommentDelimiters(new char[] { '#', ';' });
                result.SetAssignDelimiters(new char[] { '=', ':' });
                break;

            case IniFileType.SambaStyle:
                result.AcceptCommentAfterKey = false;
                result.SetCommentDelimiters(new char[] { ';', '#' });
                result.LineContinuation = true;
                break;

            case IniFileType.MysqlStyle:
                result.AcceptCommentAfterKey      = false;
                result.AcceptNoAssignmentOperator = true;
                result.SetCommentDelimiters(new char[] { '#' });
                result.SetAssignDelimiters(new char[] { ':', '=' });
                break;

            case IniFileType.WindowsStyle:
                result.ConsumeAllKeyText = true;
                break;
            }

            return(result);
        }
예제 #9
0
        /// <summary>
        /// Loads the file not saving comments.
        /// </summary>
        private void Load(IniReader reader)
        {
            reader.IgnoreComments = false;
            bool       sectionFound = false;
            IniSection section      = null;

            while (reader.Read())
            {
                switch (reader.Type)
                {
                case IniType.Empty:
                    if (!sectionFound)
                    {
                        initialComment.Add(reader.Comment);
                    }
                    else
                    {
                        section.Set(reader.Comment);
                    }

                    break;

                case IniType.Section:
                    sectionFound = true;
                    section      = new IniSection(reader.Name, reader.Comment);
                    sections.Add(section);
                    break;

                case IniType.Key:
                    section.Set(reader.Name, reader.Value, reader.Comment);
                    break;
                }
            }

            reader.Close();
        }
예제 #10
0
		public void NoEndingQuote ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini]");
			writer.WriteLine (" some key = \" something ");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
		}
예제 #11
0
		public void IgnoreComments ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini]");
			writer.WriteLine (" some key = something ; my comment 1");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			reader.IgnoreComments = true;
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (null, reader.Comment);
		}
예제 #12
0
		public void SectionsWithSameName ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini]");
			writer.WriteLine (" some key = something");
			writer.WriteLine ("[Nini]");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			try
			{
				reader.Read ();
			}
			catch(IniException e)
			{
				Assert.AreEqual (3, e.LineNumber);
				Assert.AreEqual (6, e.LinePosition);
			}
		}
예제 #13
0
		public void LineContinuationNoSpace ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Test]");
			writer.WriteLine (" option = this will be \\");
			writer.WriteLine ("continued later");
			
			IniReader reader = new IniReader 
				(new StringReader (writer.ToString ()));
			reader.LineContinuation = true;

			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual ("this will be continued later", reader.Value);
			Assert.IsFalse (reader.Read ());
		}
예제 #14
0
 /// <include file='IniDocument.xml' path='//Method[@name="LoadIniReader"]/docs/*' />
 public void Load(IniReader reader)
 {
     LoadReader (reader);
 }
예제 #15
0
		public void NoEndOfLineKeyNoValue ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini Thing]");
			writer.Write (" somekey = ");

			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			reader.Read ();
			Assert.IsTrue (true);
		}
예제 #16
0
		public void NoSectionsOrKeys ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("");

			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			reader.Read ();
			Assert.IsTrue (true);
		}
예제 #17
0
 /// <include file='IniDocument.xml' path='//Method[@name="LoadIniReader"]/docs/*' />
 public void Load(IniReader reader)
 {
     LoadReader(reader);
 }
예제 #18
0
 /// <include file='IniDocument.xml' path='//Constructor[@name="ConstructorIniReader"]/docs/*' />
 public IniDocument(IniReader reader)
 {
     fileType = IniFileType.Standard;
     Load (reader);
 }
예제 #19
0
        /// <summary>
        /// Loads the file not saving comments.
        /// </summary>
        private void LoadReader(IniReader reader)
        {
            reader.IgnoreComments = false;
            bool sectionFound = false;
            IniSection section = null;

            try {
                while (reader.Read ())
                {
                    switch (reader.Type)
                    {
                    case IniType.Empty:
                        if (!sectionFound) {
                            initialComment.Add (reader.Comment);
                        } else {
                            section.Set (reader.Comment);
                        }

                        break;
                    case IniType.Section:
                        sectionFound = true;
                        // If section already exists then overwrite it
                        if (sections[reader.Name] != null) {
                            sections.RemoveSection (reader.Name);
                        }
                        section = new IniSection (reader.Name, reader.Comment);
                        sections.Add (section);

                        break;
                    case IniType.Key:
                        if (section.GetValue (reader.Name) == null) {
                            section.Set (reader.Name, reader.Value, reader.Comment);
                        }
                        break;
                    }
                }
            } catch (Exception ex) {
                throw ex;
            } finally {
                // Always close the file
                reader.Close ();
            }
        }
예제 #20
0
        /// <summary>
        /// Returns a proper INI reader depending upon the type parameter.
        /// </summary>
        private IniReader GetIniReader(TextReader reader, IniFileType type)
        {
            IniReader result = new IniReader (reader);

            switch (type)
            {
            case IniFileType.Standard:
                // do nothing
                break;
            case IniFileType.PythonStyle:
                result.AcceptCommentAfterKey = false;
                result.SetCommentDelimiters (new char[] { ';', '#' });
                result.SetAssignDelimiters (new char[] { ':' });
                break;
            case IniFileType.MercurialStyle:
                result.AcceptCommentAfterKey = false;
                result.SetCommentDelimiters(new char[] { '#', ';'});
                result.SetAssignDelimiters(new char[] { '=', ':' });
                break;
            case IniFileType.SambaStyle:
                result.AcceptCommentAfterKey = false;
                result.SetCommentDelimiters (new char[] { ';', '#' });
                result.LineContinuation = true;
                break;
            case IniFileType.MysqlStyle:
                result.AcceptCommentAfterKey = false;
                result.AcceptNoAssignmentOperator = true;
                result.SetCommentDelimiters (new char[] { '#' });
                result.SetAssignDelimiters (new char[] { ':', '=' });
                break;
            case IniFileType.WindowsStyle:
                result.ConsumeAllKeyText = true;
                break;
            }

            return result;
        }
예제 #21
0
		public void KeyWithNoEquals ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini]");
			writer.WriteLine (" some key ");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
		}
예제 #22
0
		public void EndCommentUnix ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Test]");
			writer.WriteLine ("; Test");
			writer.WriteLine (" float1 = 1.0 ;"); // no space after comment
			writer.WriteLine (" float2 = 2.0");
			
			IniReader reader = new IniReader 
							(new StringReader (ConvertToUnix (writer.ToString ())));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual ("float1", reader.Name, "float1 not found");
			Assert.AreEqual ("1.0", reader.Value, "float1 value not found");
			Assert.IsTrue (reader.Read (), "Could not find last float");
			Assert.AreEqual ("float2", reader.Name);
			Assert.AreEqual ("2.0", reader.Value);
		}
예제 #23
0
		public void MoveToNextSection ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("; Test");
			writer.WriteLine ("; Test 1");
			writer.WriteLine ("[Nini Thing]");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.MoveToNextSection ());
			Assert.AreEqual (4, reader.LineNumber);
			Assert.AreEqual (IniType.Section, reader.Type);
			Assert.IsFalse (reader.MoveToNextSection ());
		}
예제 #24
0
파일: Daemon.cs 프로젝트: snorp/tangerine
        public static void ParseConfig()
        {
            cfgSource = new IniConfigSource ();

            if (File.Exists (ConfigPath)) {
                IniReader ireader = new IniReader (ConfigPath);
                ireader.SetCommentDelimiters(new char[] { '#' });
                ireader.SetAssignDelimiters(new char[] { '=' });
                cfgSource = new IniConfigSource (new IniDocument (ireader));
            }

            IConfig cfg = cfgSource.Configs["Tangerine"];
            if (cfg == null) {
                cfg = cfgSource.AddConfig ("Tangerine");
            }

            cfg.Alias.AddAlias ("yes", true);
            cfg.Alias.AddAlias ("true", true);
            cfg.Alias.AddAlias ("no", false);
            cfg.Alias.AddAlias ("false", false);

            Name = cfg.Get ("name", String.Format ("{0}'s Music", Environment.UserName));
            PasswordFile = cfg.Get ("password_file");
            Debug = cfg.GetBoolean ("debug", false);
            MaxUsers = cfg.GetInt ("max_users", 0);

            string defaultLogFile = null;

            LogFile = cfg.Get ("log_file", defaultLogFile);

            Port = (ushort) cfg.GetInt ("port", 0);
            IsPublished = (bool) cfg.GetBoolean ("publish", true);
            string names = cfg.Get ("plugins", "file,session");

            if (names != null && names != String.Empty) {
                PluginNames = names.Split(',');
            } else {
                PluginNames = new string[0];
            }
        }
예제 #25
0
		public void MoveToNextKey ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("; Test");
			writer.WriteLine ("; Test 1");
			writer.WriteLine ("[Nini Thing]");
			writer.WriteLine ("; Test");
			writer.WriteLine (" my key = new key");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsFalse (reader.MoveToNextKey ());
			Assert.AreEqual (4, reader.LineNumber);
			Assert.IsTrue (reader.MoveToNextKey ());
			Assert.AreEqual (6, reader.LineNumber);
			Assert.AreEqual (IniType.Key, reader.Type);
			Assert.AreEqual ("my key", reader.Name);
		}
예제 #26
0
 /// <include file='IniDocument.xml' path='//Constructor[@name="ConstructorIniReader"]/docs/*' />
 public IniDocument(IniReader reader)
 {
     fileType = IniFileType.Standard;
     Load(reader);
 }
예제 #27
0
		public void NoEndOfLineComment ()
		{
			StringWriter writer = new StringWriter ();
			writer.Write (" ;   Some comment  ");

			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			reader.Read ();
			Assert.IsTrue (true);
		}
예제 #28
0
 /// <include file='IniException.xml' path='//Constructor[@name="ConstructorTextReader"]/docs/*' />
 internal IniException(IniReader reader, string message)
     : this(message)
 {
     iniReader    = reader;
     this.message = message;
 }
예제 #29
0
		public void NoEndOfLineSection ()
		{
			StringWriter writer = new StringWriter ();
			writer.Write ("[Nini Thing]");

			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			reader.Read ();
			Assert.IsTrue (true);
		}
예제 #30
0
		/// <include file='IniException.xml' path='//Constructor[@name="ConstructorTextReader"]/docs/*' />
		internal IniException (IniReader reader, string message)
			: this (message)
		{
			iniReader = reader;
			this.message = message;
		}
예제 #31
0
		public void NoLineContinuation ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Test]");
			writer.WriteLine (" option = this will be \\ ");
			writer.WriteLine ("continued later");
			
			IniReader reader = new IniReader 
				(new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
		}
예제 #32
0
		public void SectionWithNoEndBracket ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini");
			writer.WriteLine ("");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));

			Assert.IsTrue (reader.Read ());
		}
예제 #33
0
		public void GetAndSetDelimiters ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Test]");
			writer.WriteLine (" option = someValue ; some comment");
			
			IniReader reader = new IniReader 
				(new StringReader (writer.ToString ()));

			Assert.AreEqual ('=', reader.GetAssignDelimiters ()[0]);
			reader.SetAssignDelimiters (new char[] {':', '='});
			Assert.AreEqual (':', reader.GetAssignDelimiters ()[0]);
			Assert.AreEqual ('=', reader.GetAssignDelimiters ()[1]);

			Assert.AreEqual (';', reader.GetCommentDelimiters ()[0]);
			reader.SetCommentDelimiters (new char[] {'#', ';'});
			Assert.AreEqual ('#', reader.GetCommentDelimiters ()[0]);
			Assert.AreEqual (';', reader.GetCommentDelimiters ()[1]);
		}
예제 #34
0
		//[ExpectedException (typeof (IniException))]
		public void LinePositionAndNumber ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("; Test");
			writer.WriteLine ("; Test 1");
			writer.WriteLine ("[Nini Thing");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			
			try
			{
				reader.Read ();
			}
			catch(IniException e)
			{
				Assert.AreEqual (3, e.LineNumber);
				Assert.AreEqual (13, e.LinePosition);
			}
		}
예제 #35
0
		public void KeyWithQuotes ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini]");
			writer.WriteLine ("  whitespace = \"  remove thing\"  ");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.AreEqual (IniType.Key, reader.Type);
			Assert.AreEqual ("whitespace", reader.Name);
			Assert.AreEqual ("  remove thing", reader.Value);
			Assert.AreEqual (null, reader.Comment);
			
			Assert.IsFalse (reader.Read ());
		}
예제 #36
0
		public void KeysWithSameName ()
		{
			StringWriter writer = new StringWriter ();
			writer.WriteLine ("[Nini]");
			writer.WriteLine (" superkey = legal ");
			writer.WriteLine ("[Pets]");
			writer.WriteLine (" superkey = legal ");
			writer.WriteLine (" superkey = overrides original ");
			IniReader reader = new IniReader (new StringReader (writer.ToString ()));
			
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			Assert.IsTrue (reader.Read ());
			
			reader.Read ();
		}