GenerateFromSchema.MarkdownGenerator.Generate C# (CSharp) Méthode

Generate() public méthode

public Generate ( Schema schema, bool isValue ) : void
schema Schema
isValue bool
Résultat void
        public void Generate(Schema schema, bool isValue)
        {
            if (m_writtenSchemas.Contains(schema))
                return;

            m_writtenSchemas.Add(schema);

            using (StreamWriter output = new StreamWriter(Path.Combine(m_outputDirectory, string.Format("{0}{1}.md", schema.Name, isValue ? "Value" : ""))))
            {
                output.WriteLine("This page describes the possible content of a CZML document or stream.  Please read [[CZML Structure]] for an explanation of how a CZML document is put together.");
                output.WriteLine();

                output.WriteLine("#{0}{1}", schema.Name, isValue ? " (value)" : "");
                output.WriteLine();

                output.WriteLine(schema.Description);
                output.WriteLine();

                if (!string.IsNullOrWhiteSpace(schema.ExtensionPrefix))
                {
                    output.WriteLine("_Note: This type is an extension and may not be implemented by all CZML clients._");
                    output.WriteLine();
                }

                if (schema.Extends != null)
                {
                    output.WriteLine("**Extends**: [[{0}]]", schema.Extends.Name);
                    output.WriteLine();

                    Generate(schema.Extends);
                }

                if (isValue)
                {
                    output.WriteLine("**Type**: {0}", JsonSchemaTypesToLabel(schema.JsonTypes));
                    output.WriteLine();
                }
                else
                {
                    output.WriteLine("**Interpolatable**: {0}", schema.IsInterpolatable ? "yes" : "no");
                    output.WriteLine();
                }

                if (schema.Examples != null)
                {
                    output.WriteLine("**Examples**:");
                    output.WriteLine();

                    foreach (string example in schema.Examples)
                    {
                        output.WriteLine("```javascript");
                        output.WriteLine(example);
                        output.WriteLine("```");
                        output.WriteLine();
                    }
                }

                if (schema.EnumValues.Any())
                {
                    output.WriteLine("##Values");
                    output.WriteLine();

                    foreach (SchemaEnumValue enumValue in schema.EnumValues)
                    {
                        output.WriteLine("* `{0}` - {1}", enumValue.Name, enumValue.Description);
                        output.WriteLine();
                    }
                }

                if (schema.Properties.Count > 0)
                {
                    output.WriteLine("##Properties");
                    output.WriteLine();

                    foreach (Property property in schema.Properties)
                    {
                        Schema propertyValueType = property.ValueType;
                        string type =
                            propertyValueType.IsSchemaFromType
                                ? JsonSchemaTypesToLabel(property.ValueType.JsonTypes)
                                : string.Format("[[{0}{1}]]", propertyValueType.Name, property.IsValue ? "Value" : "");

                        output.WriteLine("**{0}** - {1}", property.Name, type);
                        output.WriteLine();
                        output.WriteLine(property.Description);
                        output.WriteLine();

                        JToken defaultToken = property.Default;
                        if (defaultToken != null)
                        {
                            string defaultValue;

                            if (defaultToken.Type == JTokenType.Boolean)
                                defaultValue = defaultToken.Value<bool>() ? "true" : "false";
                            else if (defaultToken.Type == JTokenType.Float)
                                defaultValue = defaultToken.Value<double>().ToString("0.0###############", CultureInfo.InvariantCulture);
                            else
                                defaultValue = defaultToken.Value<string>();

                            output.WriteLine("Default: `{0}`", defaultValue);
                            output.WriteLine();
                        }

                        if (property.Examples != null)
                        {
                            output.WriteLine("**Examples**:");
                            output.WriteLine();

                            foreach (string example in property.Examples)
                            {
                                output.WriteLine("```javascript");
                                output.WriteLine(example);
                                output.WriteLine("```");
                                output.WriteLine();
                            }
                        }

                        output.WriteLine();

                        if (!propertyValueType.IsSchemaFromType)
                        {
                            Generate(propertyValueType, property.IsValue);
                        }
                    }
                }

                if (schema.AdditionalProperties != null)
                {
                    var propertyValueType = schema.AdditionalProperties.ValueType;
                    output.WriteLine("This type represents a key-value mapping, where values are of type [[{0}]].", propertyValueType.Name);
                    output.WriteLine();

                    Generate(propertyValueType);
                }
            }
        }

Same methods

MarkdownGenerator::Generate ( Schema schema ) : void