vimage.Config.ReadSection C# (CSharp) Method

ReadSection() private method

private ReadSection ( StreamReader reader, List setting, string sectionName = "" ) : string
reader StreamReader
setting List
sectionName string
return string
        private string ReadSection(StreamReader reader, List<object> setting, string sectionName = "")
        {
            string line = reader.ReadLine();
            string trimedLine = RemoveSpaces(line);
            string[] splitValues;

            if (trimedLine.Equals("}"))
                return line;

            while (line != null)
            {
                if (!trimedLine.Equals("-") && trimedLine.IndexOf(':') == -1)
                {
                    // Subsection
                    string subSectionName = line.Replace("\t", "");

                    line = RemoveSpaces(reader.ReadLine());

                    // line is empty or is part of another setting, skip
                    if (line.Equals("") || line.IndexOf('=') != -1)
                        continue;
                    // line doesn't have open brace, skip
                    if (!line.Equals("{"))
                        continue;

                    setting.Add(subSectionName);
                    List<object> subSetting = new List<object>();
                    setting.Add(subSetting);

                    line = ReadSection(reader, subSetting);
                    trimedLine = line;
                }
                else
                {
                    // Item
                    if (trimedLine.Equals("-"))
                        splitValues = new[] { "-", "-" }; // line break
                    else
                        splitValues = line.Split(new char[] { ':' }, 2);

                    // trim tabs from name, spaces from map name
                    splitValues[0] = splitValues[0].Replace("\t", "").Trim();
                    if (splitValues[1].IndexOf('\"') != -1 || splitValues[1].IndexOf('%') != -1)
                        splitValues[1] = splitValues[1].Trim(); // keep spaces if custom action
                    else
                        splitValues[1] = RemoveSpaces(splitValues[1]);

                    // assign Values
                    if (sectionName == "CUSTOMACTIONBINDINGS")
                        setting.Add(new { name = splitValues[0], bindings = StringToControls(splitValues[1]) });
                    else
                        setting.Add(new { name = splitValues[0], func = splitValues[1] });

                    // next line
                    line = reader.ReadLine();
                    trimedLine = RemoveSpaces(line);
                }

                // break if end brace
                if (trimedLine.Equals("}"))
                {
                    if (reader.Peek() == -1)
                        return line;
                    line = RemoveSpaces(reader.ReadLine());
                    break;
                }
            }

            return line;
        }