Ejemplo n.º 1
0
        /// <summary>
        /// Writes the given property containers to a JSON string and any asset references to the given storage
        /// @NOTE return string is in the format "[{..}, {..}]"
        /// </summary>
        /// <param name="objects">Generic property containers to write</param>
        /// <returns>JSON stringified objects</returns>
        public static string Persist(params IPropertyContainer[] objects)
        {
            var sb = new StringBuilder();

            sb.Append("[");

            var first = true;

            foreach (var obj in objects)
            {
                if (!first)
                {
                    sb.Append(",\n");
                }
                else
                {
                    first = false;
                }

                sb.Append(JsonPropertyContainerWriter.Write(obj, Visitor));
            }

            sb.Append("]");
            return(sb.ToString());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// NOTE: This method is not optimal. It must type check and cast objects
        /// @TODO Write specialized methods for our use cases
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="objects">Objects to pack</param>
        private static void Persist(TextWriter writer, IEnumerable <IPropertyContainer> objects)
        {
            writer.Write("[");

            var first = true;

            foreach (var obj in objects)
            {
                if (null == obj)
                {
                    continue;
                }

                if (!first)
                {
                    writer.Write(",\n");
                }
                else
                {
                    first = false;
                }

                (obj as IRegistryObject)?.Refresh();

                if (obj is UTinyProject)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyProject)obj, Visitor));
                }
                else if (obj is UTinyModule)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyModule)obj, Visitor));
                }
                else if (obj is UTinyType)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyType)obj, Visitor));
                }
                else if (obj is UTinyEntityGroup)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyEntityGroup)obj, Visitor));
                }
                else if (obj is UTinyEntity)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyEntity)obj, Visitor));
                }
                else if (obj is UTinyObject)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyObject)obj, Visitor));
                }
                else if (obj is UTinyScript)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinyScript)obj, Visitor));
                }
                else if (obj is UTinySystem)
                {
                    writer.Write(JsonPropertyContainerWriter.Write((UTinySystem)obj, Visitor));
                }
                else
                {
                    writer.Write(JsonPropertyContainerWriter.Write(obj, Visitor));
                }
            }

            writer.Write("]");
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Writes the given property container to a JSON string and any asset references to the given storage
 /// </summary>
 /// <param name="container">Generic property container</param>
 /// <returns>JSON stringified object</returns>
 public static string Persist(IPropertyContainer container)
 {
     return(JsonPropertyContainerWriter.Write(container, Visitor));
 }
Ejemplo n.º 4
0
 public static string Serialize <TContainer>(ref TContainer container, JsonPropertyVisitor visitor = null)
     where TContainer : struct, IPropertyContainer
 {
     return(JsonPropertyContainerWriter.Write(ref container, visitor));
 }