protected virtual void WriteJsonSchema([NotNull] JsonTextWriter output, [NotNull] IProject project, [NotNull] IDatabase database) { var pairs = GetTemplates(project, database); var languages = database.Languages.ToArray(); output.WriteStartObject(); output.WritePropertyString("$schema", "http://json-schema.org/draft-04/schema#"); output.WritePropertyString("type", "object"); output.WritePropertyString("additionalProperties", false); output.WriteStartObject("properties"); output.WriteObjectString("$schema", "type", "string"); foreach (var pair in pairs.OrderBy(t => t.Key)) { output.WriteStartObject(pair.Key); output.WritePropertyString("$ref", "#/definitions/" + pair.Key); output.WriteEndObject(); } output.WriteStartObject("Template"); output.WritePropertyString("$ref", "#/definitions/Template"); output.WriteEndObject(); output.WriteEndObject(); output.WriteStartObject("definitions"); foreach (var pair1 in pairs.OrderBy(t => t.Key)) { WriteJsonTemplate(output, languages, pairs, pair1); } WriteJsonTemplate(output); output.WriteEndObject(); output.WriteEndObject(); }