CodeImp.Gluon.Configuration.OutputStructure C# (CSharp) Метод

OutputStructure() приватный Метод

private OutputStructure ( IDictionary cs, int level, string newline, bool whitespace ) : string
cs IDictionary
level int
newline string
whitespace bool
Результат string
        private string OutputStructure(IDictionary cs, int level, string newline, bool whitespace)
        {
            string leveltabs = "";
            string spacing = "";
            StringBuilder db = new StringBuilder("");

            // Check if this ConfigStruct is not empty
            if(cs.Count > 0)
            {
                // Create whitespace
                if(whitespace)
                {
                    for(int i = 0; i < level; i++) leveltabs += "\t";
                    spacing = " ";
                }

                // Get enumerator
                IDictionaryEnumerator de = cs.GetEnumerator();

                // Go for each item
                for(int i = 0; i < cs.Count; i++)
                {
                    // Go to next item
                    de.MoveNext();

                    // Check if the value is null
                    if(de.Value == null)
                    {
                        // Output the keyword "null"
                        //db.Append(leveltabs); db.Append(de.Key.ToString()); db.Append(spacing);
                        //db.Append("="); db.Append(spacing); db.Append("null;"); db.Append(newline);

                        // Output key only
                        db.Append(leveltabs); db.Append(de.Key.ToString()); db.Append(";"); db.Append(newline);
                    }
                    // Check if the value if of ConfigStruct type
                    else if(de.Value is IDictionary)
                    {
                        // Output recursive structure
                        if(whitespace) { db.Append(leveltabs); db.Append(newline); }
                        db.Append(leveltabs); db.Append(de.Key); db.Append(newline);
                        db.Append(leveltabs); db.Append("{"); db.Append(newline);
                        db.Append(OutputStructure((IDictionary)de.Value, level + 1, newline, whitespace));
                        db.Append(leveltabs); db.Append("}"); db.Append(newline);
                        if(whitespace) { db.Append(leveltabs); db.Append(newline); }
                    }
                    // Check if the value is of boolean type
                    else if(de.Value is bool)
                    {
                        // Check value
                        if((bool)de.Value == true)
                        {
                            // Output the keyword "true"
                            db.Append(leveltabs); db.Append(de.Key.ToString()); db.Append(spacing);
                            db.Append("="); db.Append(spacing); db.Append("true;"); db.Append(newline);
                        }
                        else
                        {
                            // Output the keyword "false"
                            db.Append(leveltabs); db.Append(de.Key.ToString()); db.Append(spacing);
                            db.Append("="); db.Append(spacing); db.Append("false;"); db.Append(newline);
                        }
                    }
                    // Check if value is of float type
                    else if(de.Value is float)
                    {
                        // Output the value with a postfixed f
                        db.Append(leveltabs); db.Append(de.Key); db.Append(spacing); db.Append("=");
                        db.Append(spacing); db.Append(String.Format(CultureInfo.InvariantCulture, "{0}", de.Value)); db.Append("f;"); db.Append(newline);
                    }
                    // Check if value is of other numeric type
                    else if(de.Value.GetType().IsPrimitive)
                    {
                        // Output the value unquoted
                        db.Append(leveltabs); db.Append(de.Key); db.Append(spacing); db.Append("=");
                        db.Append(spacing); db.Append(String.Format(CultureInfo.InvariantCulture, "{0}", de.Value)); db.Append(";"); db.Append(newline);
                    }
                    else
                    {
                        // Output the value with quotes and escape characters
                        db.Append(leveltabs); db.Append(de.Key); db.Append(spacing); db.Append("=");
                        db.Append(spacing); db.Append("\""); db.Append(EscapedString(de.Value.ToString())); db.Append("\";"); db.Append(newline);
                    }
                }
            }

            // Return the structure
            return db.ToString();
        }