/// <summary>
        /// Write Any object to the given writer.
        /// </summary>
        /// <param name="writer">The writer.</param>
        public void Write(IOpenApiWriter writer)
        {
            if (writer == null)
            {
                throw Error.ArgumentNull("writer");
            }

            // { for json, empty for YAML
            writer.WriteStartObject();

            foreach (var item in this)
            {
                writer.WritePropertyName(item.Key);

                IOpenApiWritable writerElement = item.Value as IOpenApiWritable;
                if (writerElement != null)
                {
                    writerElement.Write(writer);
                }
                else
                {
                    writer.WriteValue(item.Value);
                }
            }

            // } for json, empty for YAML
            writer.WriteEndObject();
        }
        private static void WriteValueInternal <T>(this IOpenApiWriter writer, T value)
        {
            IOpenApiWritable writableElement = value as IOpenApiWritable;

            if (writableElement != null)
            {
                writableElement.Write(writer);
            }
            else
            {
                writer.WriteValue(value);
            }
        }
Esempio n. 3
0
        internal static string WriteToYaml(this IOpenApiWritable element,
                                           Action <IOpenApiWriter, IOpenApiWritable> before = null,
                                           Action <IOpenApiWriter, IOpenApiWritable> after  = null)
        {
            Action <IOpenApiWriter> action = writer =>
            {
                before?.Invoke(writer, element);
                element?.Write(writer);
                after?.Invoke(writer, element);
                writer?.Flush();
            };

            return(Write(OpenApiTarget.Yaml, action));
        }
        /// <summary>
        /// Write the single of Open API element if the element is not null, otherwise skip it.
        /// </summary>
        /// <param name="writer">The Open API writer.</param>
        /// <param name="name">The property name.</param>
        /// <param name="element">The Open API element.</param>
        public static void WriteOptionalObject(this IOpenApiWriter writer, string name, IOpenApiWritable element)
        {
            if (element == null)
            {
                return;
            }

            writer.WritePropertyInternal(name, element);
        }
 /// <summary>
 /// Write the single of Open API element.
 /// </summary>
 /// <param name="writer">The Open API writer.</param>
 /// <param name="name">The property name.</param>
 /// <param name="value">The Open API element.</param>
 public static void WriteRequiredObject(this IOpenApiWriter writer, string name, IOpenApiWritable value)
 {
     writer.WritePropertyInternal(name, value);
 }