示例#1
0
        /// <summary>
        ///     Parses a string containing valid ini data
        /// </summary>
        /// <param Name="iniDataString">
        ///     String with data
        /// </param>
        /// <returns>
        ///     An <see cref="IniData"/> instance with the data contained in
        ///     the <paramref Name="iniDataString"/> correctly parsed an structured.
        /// </returns>
        /// <exception cref="ParsingException">
        ///     Thrown if the data could not be parsed
        /// </exception>
        public IniData Parse(string iniDataString)
        {
            IniData iniData = new IniData();

            iniData.Configuration = this.Configuration.Clone();

            if (string.IsNullOrEmpty(iniDataString))
            {
                return(iniData);
            }

            _currentCommentListTemp.Clear();
            _currentSectionNameTemp = null;

            try
            {
                foreach (var line in iniDataString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
                {
                    ProcessLine(line, iniData);
                }
            }
            catch
            {
                if (Configuration.ThrowExceptionsOnError)
                {
                    throw;
                }

                return(null);
            }

            return((IniData)iniData.Clone());
        }
示例#2
0
        private static void save()
        {
            var     parser  = new FileIniDataParser();
            IniData dataTmp = (IniData)defaultData.Clone();

            dataTmp.Merge(data);
            parser.WriteFile("config.ini", data);
        }
示例#3
0
        /// <summary>
        ///     Parses a string containing valid ini data
        /// </summary>
        /// <param name="iniDataString">
        ///     String with data
        /// </param>
        /// <returns>
        ///     An <see cref="IniData"/> instance with the data contained in
        ///     the <paramref name="iniDataString"/> correctly parsed an structured.
        /// </returns>
        /// <exception cref="ParsingException">
        ///     Thrown if the data could not be parsed
        /// </exception>
        public IniData Parse(string iniDataString)
        {
            IniData iniData = new IniData();

            iniData.Configuration = this.Configuration.Clone();

            if (string.IsNullOrEmpty(iniDataString))
            {
                return(iniData);
            }

            _currentCommentListTemp.Clear();
            _currentSectionNameTemp = null;

            try
            {
                var lines = iniDataString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (var line in lines)
                {
                    ProcessLine(line, iniData);
                }

                // Orphan comments, assing to last section/key value
                if (_currentCommentListTemp.Count > 0)
                {
                    // Check if there are actually sections in the file
                    if (iniData.Sections.Count > 0)
                    {
                        iniData.Sections.GetSectionData(_currentSectionNameTemp).TrailingComments
                        .AddRange(_currentCommentListTemp);
                    }
                    // No sections, put the comment in the last key value pair
                    // but only if the ini file contains at least one key-value pair
                    else if (iniData.Global.Count > 0)
                    {
                        iniData.Global.GetLast().Comments
                        .AddRange(_currentCommentListTemp);
                    }


                    _currentCommentListTemp.Clear();
                }
            }
            catch
            {
                if (Configuration.ThrowExceptionsOnError)
                {
                    throw;
                }

                return(null);
            }

            return((IniData)iniData.Clone());
        }
示例#4
0
        private void SetPortConfig(JToken portConfig, IniData synoConfig)
        {
            PortConfig = portConfig == null ? null : portConfig.DeepClone();
            SynoConfig = synoConfig == null ? null : synoConfig.Clone() as IniData;

            checkBoxPortConfig.Checked = portConfig != null;
            panelPortConfig.Visible    = portConfig != null;
            buttonAdvanced.Enabled     = portConfig != null;

            DisplayPortConfig();
        }
示例#5
0
        /// <summary>
        ///     Parses a string containing valid ini data
        /// </summary>
        /// <param name="iniDataString">
        ///     String with data
        /// </param>
        /// <returns>
        ///     An <see cref="IniData"/> instance with the data contained in
        ///     the <paramref name="iniDataString"/> correctly parsed an structured.
        /// </returns>
        /// <exception cref="ParsingException">
        ///     Thrown if the data could not be parsed
        /// </exception>
        public IniData Parse(string iniDataString)
        {
            IniData iniData = new IniData();

            iniData.Configuration = this.Configuration.Clone();

            if (string.IsNullOrEmpty(iniDataString))
            {
                return(iniData);
            }

            _currentCommentListTemp.Clear();
            _currentSectionNameTemp = null;

            try
            {
                var lines = iniDataString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (var line in lines)
                {
                    ProcessLine(line, iniData);
                }

                // Orphan comments, assing to last section
                if (_currentCommentListTemp.Count > 0)
                {
                    iniData.Sections.GetSectionData(_currentSectionNameTemp).TrailingComments
                    .AddRange(_currentCommentListTemp);
                    _currentCommentListTemp.Clear();
                }
            }
            catch
            {
                if (Configuration.ThrowExceptionsOnError)
                {
                    throw;
                }

                return(null);
            }

            return((IniData)iniData.Clone());
        }
示例#6
0
文件: PKG_Conf.cs 项目: vletroye/Mods
        //public PortConfig(JObject resource, string packageFolder)
        public PKG_Conf(IniData pkgConf, List <Tuple <string, string> > variables, string pkgConfName, string toolTip)
        {
            InitializeComponent();

            fields = new List <string>();
            fields.Add("package_name");
            fields.Add("pkg_min_ver");
            fields.Add("pkg_max_ver");
            fields.Add("dsm_min_ver");
            fields.Add("dsm_max_ver");

            this.origPkgConf = pkgConf == null ? null : pkgConf.Clone() as IniData;
            this.pkgConfName = pkgConfName;
            this.Text        = this.Text + " - " + pkgConfName;

            this.toolTip.SetToolTip(this.dataGridViewConfig, toolTip);

            this.variables = variables;
            SetPkgConfig(pkgConf);

            foreach (var control in panelPortConfig.Controls)
            {
                var item = control as Control;
                if (item != null)
                {
                    item.MouseEnter += new System.EventHandler(this.OnMouseEnter);
                    item.Enter      += new System.EventHandler(this.OnMouseEnter);
                    item.MouseLeave += new System.EventHandler(this.OnMouseLeave);

                    if (item.Name.StartsWith("textBox") && Helper.IsSubscribed(item, "EventValidating"))
                    {
                        item.TextChanged += new System.EventHandler(this.OnTextChanged);
                    }
                }
            }

            Helper.LoadDSMReleases(textBoxDsmMinVer);
            Helper.LoadDSMReleases(textBoxDsmMaxVer);
        }
示例#7
0
        /// <summary>
        ///     Parses a string containing valid ini data
        /// </summary>
        /// <param name="iniDataString">
        ///     String with data
        /// </param>
        /// <returns>
        ///     An <see cref="IniData"/> instance with the data contained in
        ///     the <paramref name="iniDataString"/> correctly parsed an structured.
        /// </returns>
        /// <exception cref="ParsingException">
        ///     Thrown if the data could not be parsed
        /// </exception>
        public IniData Parse(string iniDataString)
        {
            IniData iniData = Configuration.CaseInsensitive ? new IniDataCaseInsensitive() : new IniData();

            iniData.Configuration = this.Configuration.Clone();

            if (string.IsNullOrEmpty(iniDataString))
            {
                return(iniData);
            }

            _errorExceptions.Clear();
            _currentCommentListTemp.Clear();
            _currentSectionNameTemp = null;

            try
            {
                var lines = iniDataString.Split(new [] { "\n", "\r\n" }, StringSplitOptions.None);
                for (int lineNumber = 0; lineNumber < lines.Length; lineNumber++)
                {
                    var line = lines[lineNumber];

                    if (line.Trim() == String.Empty)
                    {
                        continue;
                    }

                    try
                    {
                        ProcessLine(line, iniData);
                    }
                    catch (Exception ex)
                    {
                        var errorEx = new ParsingException(ex.Message, lineNumber + 1, line, ex);
                        if (Configuration.ThrowExceptionsOnError)
                        {
                            throw errorEx;
                        }
                        else
                        {
                            _errorExceptions.Add(errorEx);
                        }
                    }
                }

                // Orphan comments, assing to last section/key value
                if (_currentCommentListTemp.Count > 0)
                {
                    // Check if there are actually sections in the file
                    if (iniData.Sections.Count > 0)
                    {
                        iniData.Sections.GetSectionData(_currentSectionNameTemp).TrailingComments
                        .AddRange(_currentCommentListTemp);
                    }
                    // No sections, put the comment in the last key value pair
                    // but only if the ini file contains at least one key-value pair
                    else if (iniData.Global.Count > 0)
                    {
                        iniData.Global.GetLast().Comments
                        .AddRange(_currentCommentListTemp);
                    }


                    _currentCommentListTemp.Clear();
                }
            }
            catch (Exception ex)
            {
                _errorExceptions.Add(ex);
                if (Configuration.ThrowExceptionsOnError)
                {
                    throw;
                }
            }


            if (HasError)
            {
                return(null);
            }
            return((IniData)iniData.Clone());
        }
示例#8
0
        public IniData Parse(string iniDataString)
        {
            IniData iniData = this.Configuration.CaseInsensitive ? new IniDataCaseInsensitive() : new IniData();

            iniData.Configuration = this.Configuration.Clone();
            bool    flag = string.IsNullOrEmpty(iniDataString);
            IniData result;

            if (flag)
            {
                result = iniData;
            }
            else
            {
                this._errorExceptions.Clear();
                this._currentCommentListTemp.Clear();
                this._currentSectionNameTemp = null;
                try
                {
                    string[] array = iniDataString.Split(new string[]
                    {
                        "\n",
                        "\r\n"
                    }, StringSplitOptions.None);
                    for (int i = 0; i < array.Length; i++)
                    {
                        string text  = array[i];
                        bool   flag2 = text.Trim() == string.Empty;
                        if (!flag2)
                        {
                            try
                            {
                                this.ProcessLine(text, iniData);
                            }
                            catch (Exception ex)
                            {
                                ParsingException ex2 = new ParsingException(ex.Message, i + 1, text, ex);
                                bool             throwExceptionsOnError = this.Configuration.ThrowExceptionsOnError;
                                if (throwExceptionsOnError)
                                {
                                    throw ex2;
                                }
                                this._errorExceptions.Add(ex2);
                            }
                        }
                    }
                    bool flag3 = this._currentCommentListTemp.Count > 0;
                    if (flag3)
                    {
                        bool flag4 = iniData.Sections.Count > 0;
                        if (!flag4)
                        {
                            bool flag5 = iniData.Global.Count > 0;
                            if (flag5)
                            {
                                iniData.Global.GetLast().Comments.AddRange(this._currentCommentListTemp);
                            }
                        }
                        this._currentCommentListTemp.Clear();
                    }
                }
                catch (Exception item)
                {
                    this._errorExceptions.Add(item);
                    bool throwExceptionsOnError2 = this.Configuration.ThrowExceptionsOnError;
                    if (throwExceptionsOnError2)
                    {
                        throw;
                    }
                }
                bool hasError = this.HasError;
                if (hasError)
                {
                    result = null;
                }
                else
                {
                    result = (IniData)iniData.Clone();
                }
            }
            return(result);
        }