Ejemplo n.º 1
0
        public void parse_ini_string_with_custom_configuration()
        {
            var parser = new IniDataParser();

            IniParser.Model.Configuration.IniParserConfiguration config = parser.Configuration;

            config.CommentString    = "#";
            config.SectionStartChar = '<';
            config.SectionEndChar   = '>';

            IniData data = parser.Parse(iniFileStrCustom);

            Assert.That(data, Is.Not.Null);
            Assert.That(data.Sections.Count, Is.EqualTo(2));
            var section1 = data.Sections.GetSectionData("section1");

            Assert.That(section1, Is.Not.Null);
            Assert.That(section1.SectionName, Is.EqualTo("section1"));
            Assert.That(section1.Comments, Is.Not.Empty);
            Assert.That(section1.Comments.Count, Is.EqualTo(1));

            Assert.That(section1.Keys, Is.Not.Null);
            Assert.That(section1.Keys.Count, Is.EqualTo(2));
            Assert.That(section1.Keys.GetKeyData("key1"), Is.Not.Null);
            Assert.That(section1.Keys["key1"], Is.EqualTo("value1"));
            Assert.That(section1.Keys.GetKeyData("key2"), Is.Not.Null);
            Assert.That(section1.Keys["key2"], Is.EqualTo("value5"));
        }
        public bool Bake(PipelineBakeContext context)
        {
            var configFile = context.Content as ConfigFile;

            var zoowriter = context.BakedWriter;

            var path = context.Depends["source"];

            var iniConfig = new IniParser.Model.Configuration.IniParserConfiguration()
            {
                CaseInsensitive = true
            };
            var iniParser = new IniParser.Parser.IniDataParser(iniConfig);
            FileIniDataParser fileIniData = new FileIniDataParser(iniParser);
            IniData           parsedData  = fileIniData.ReadFile(path);
            //foreach (var key in parsedData.Global)

            var ms = new MemoryStream();
            var bw = new BinaryWriter(ms);

            int count = 0;

            foreach (var mfi in configFile.reflectionData.Values)
            {
                string val;
                bool   has = parsedData.TryGetKey(mfi.FieldInfo.Name, out val);
                if (!has)
                {
                    continue;
                }
                switch (mfi.Type)
                {
                case ConfigFile.FieldType.String:
                    DumpValue(bw, mfi);
                    mfi.FieldInfo.SetValue(this, val);
                    count++;
                    break;

                case ConfigFile.FieldType.Int32:
                {
                    int temp;
                    if (int.TryParse(val, out temp))
                    {
                        count++;
                        DumpValue(bw, mfi);
                        bw.Write(temp);
                    }
                    break;
                }

                case ConfigFile.FieldType.Float:
                {
                    float temp;
                    if (float.TryParse(val, out temp))
                    {
                        count++;
                        DumpValue(bw, mfi);
                        bw.Write(temp);
                    }
                    break;
                }
                }
            }

            bw.Flush();
            zoowriter.Write(count);
            zoowriter.Write(ms.ToArray());

            return(true);
        }
Ejemplo n.º 3
0
        private string ParseFile(string Filename)
        {
            bool UseCustomComboColour = false;


            List <string> IniValues   = new List <string>();
            string        IniDataFile = File.ReadAllText(Filename);
            var           parser      = new IniDataParser();

            IniParser.Model.Configuration.IniParserConfiguration config = parser.Configuration;

            config.KeyValueAssigmentChar  = Convert.ToChar(":");
            config.CommentString          = "//";
            config.SkipInvalidLines       = true;
            config.AllowDuplicateSections = true;
            config.AllowDuplicateKeys     = true;


            IniData data = parser.Parse(IniDataFile);


            // Loop to get all General Keys
            for (int i = 0; i < 19; i++)
            {
                string s = data["General"][GeneralSection[i, 0]];
                if (s != null)
                {
                    s = FormatString(s);
                }
                else
                {
                    s = GeneralSection[i, 1];
                }

                IniValues.Add(s);
            }

            // Loop to get all Colours Keys
            for (int i = 0; i < 17; i++)
            {
                string s = data["Colours"][ColoursSection[i, 0]];

                // if Combo1 is given within Skin.ini it Ignores the Defaults for Combo2 to Combo4
                if ((i == 0) && !string.IsNullOrEmpty(s))
                {
                    UseCustomComboColour = true;
                }

                if (s != null)
                {
                    s = FormatString(s);
                }
                else
                {
                    if (i > 0 && i <= 7 && UseCustomComboColour)
                    {
                        s = "";
                    }
                    else
                    {
                        s = ColoursSection[i, 1];
                    }
                }
                IniValues.Add(s);
            }

            for (int i = 0; i < 6; i++)
            {
                string s = data["Fonts"][FontsSection[i, 0]];
                if (s != null)
                {
                    s = FormatString(s);
                }
                else
                {
                    s = FontsSection[i, 1];
                }
                IniValues.Add(s);
            }

            return(InsertInJSONClass(IniValues));
        }