public static void WriteDictKeyValue(StringBuilder sb, string key, PBXElement value, int indent, bool compact, PropertyCommentChecker checker, GUIDToCommentMap comments) { if (!compact) { sb.Append("\n"); sb.Append(GetIndent(indent)); } WriteStringImpl(sb, key, checker.CheckKeyInDict(key), comments); sb.Append(" = "); if (value is PBXElementString) { WriteStringImpl(sb, value.AsString(), checker.CheckStringValueInDict(key, value.AsString()), comments); } else if (value is PBXElementDict) { WriteDict(sb, value.AsDict(), indent, compact, checker.NextLevel(key), comments); } else if (value is PBXElementArray) { WriteArray(sb, value.AsArray(), indent, compact, checker.NextLevel(key), comments); } sb.Append(";"); if (compact) { sb.Append(" "); } }
public static void WriteDict(StringBuilder sb, PBXElementDict el, int indent, bool compact, PropertyCommentChecker checker, GUIDToCommentMap comments) { sb.Append("{"); if (el.Contains("isa")) { WriteDictKeyValue(sb, "isa", el["isa"], indent + 1, compact, checker, comments); } var keys = new List <string>(el.values.Keys); keys.Sort(StringComparer.Ordinal); foreach (var key in keys) { if (key != "isa") { WriteDictKeyValue(sb, key, el[key], indent + 1, compact, checker, comments); } } if (!compact) { sb.Append("\n"); sb.Append(GetIndent(indent)); } sb.Append("}"); }
public string WriteToString() { GUIDToCommentMap comments1 = this.BuildCommentMap(); PropertyCommentChecker checker1 = new PropertyCommentChecker(); GUIDToCommentMap comments2 = new GUIDToCommentMap(); StringBuilder sb1 = new StringBuilder(); if (this.m_ObjectVersion != null) { sb1.AppendFormat("objectVersion = {0};\n\t", (object)this.m_ObjectVersion); } sb1.Append("objects = {"); foreach (string key in this.m_SectionOrder) { if (this.m_Section.ContainsKey(key)) { this.m_Section[key].WriteSection(sb1, comments1); } else if (this.m_UnknownSections.ContainsKey(key)) { this.m_UnknownSections[key].WriteSection(sb1, comments1); } } foreach (KeyValuePair <string, PBXElement> keyValuePair in (IEnumerable <KeyValuePair <string, PBXElement> >) this.m_UnknownObjects.values) { Serializer.WriteDictKeyValue(sb1, keyValuePair.Key, keyValuePair.Value, 2, false, checker1, comments2); } sb1.Append("\n\t};"); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("// !$*UTF8*$!\n"); StringBuilder sb2 = stringBuilder; PBXElementDict el = this.m_RootElements; int indent = 0; int num = 0; string[] strArray = new string[1]; int index = 0; string str = "rootObject/*"; strArray[index] = str; PropertyCommentChecker checker2 = new PropertyCommentChecker((IEnumerable <string>)strArray); GUIDToCommentMap comments3 = comments1; Serializer.WriteDict(sb2, el, indent, num != 0, checker2, comments3); stringBuilder.Append("\n"); return(stringBuilder.ToString().Replace("objects = OBJMARKER;", sb1.ToString())); }
public string WriteToString() { var commentMap = BuildCommentMap(); var emptyChecker = new PropertyCommentChecker(); var emptyCommentMap = new GUIDToCommentMap(); // since we need to add custom comments, the serialization is much more complex StringBuilder objectsSb = new StringBuilder(); if (m_ObjectVersion != null) // objectVersion comes right before objects { objectsSb.AppendFormat("objectVersion = {0};\n\t", m_ObjectVersion); } objectsSb.Append("objects = {"); foreach (string sectionName in m_SectionOrder) { if (m_Section.ContainsKey(sectionName)) { m_Section[sectionName].WriteSection(objectsSb, commentMap); } else if (m_UnknownSections.ContainsKey(sectionName)) { m_UnknownSections[sectionName].WriteSection(objectsSb, commentMap); } } foreach (var kv in m_UnknownObjects.values) { Serializer.WriteDictKeyValue(objectsSb, kv.Key, kv.Value, 2, false, emptyChecker, emptyCommentMap); } objectsSb.Append("\n\t};"); StringBuilder contentSb = new StringBuilder(); contentSb.Append("// !$*UTF8*$!\n"); Serializer.WriteDict(contentSb, m_RootElements, 0, false, new PropertyCommentChecker(new string[] { "rootObject/*" }), commentMap); contentSb.Append("\n"); string content = contentSb.ToString(); content = content.Replace("objects = OBJMARKER;", objectsSb.ToString()); return(content); }
public static void WriteArray(StringBuilder sb, PBXElementArray el, int indent, bool compact, PropertyCommentChecker checker, GUIDToCommentMap comments) { sb.Append("("); foreach (var value in el.values) { if (!compact) { sb.Append("\n"); sb.Append(GetIndent(indent + 1)); } if (value is PBXElementString) { WriteStringImpl(sb, value.AsString(), checker.CheckStringValueInArray(value.AsString()), comments); } else if (value is PBXElementDict) { WriteDict(sb, value.AsDict(), indent + 1, compact, checker.NextLevel("*"), comments); } else if (value is PBXElementArray) { WriteArray(sb, value.AsArray(), indent + 1, compact, checker.NextLevel("*"), comments); } sb.Append(","); if (compact) { sb.Append(" "); } } if (!compact) { sb.Append("\n"); sb.Append(GetIndent(indent)); } sb.Append(")"); }