diff --git a/examples/docs/README.md b/examples/docs/README.md index 0502d30d..7a6a4240 100644 --- a/examples/docs/README.md +++ b/examples/docs/README.md @@ -20,6 +20,7 @@ * [Extensible](./extensible.schema.md) – `https://example.com/schemas/extensible` (Unknown) * [Identifiable](./identifiable.schema.md) – `https://example.com/schemas/identifiable` (Unknown) * [Join Types](./join.schema.md) – `https://example.com/schemas/join` (Unknown) +* [Nested Object](./nestedobj.schema.md) – `https://example.com/schemas/nestedobject` (Unknown) * [Pattern Properties](./pattern.schema.md) – `https://example.com/schemas/pattern` (Unknown) * [Simple](./simple.schema.md) – `https://example.com/schemas/simple` (Unknown) * [Simple Types](./simpletypes.schema.md) – `https://example.com/schemas/simpletypes` (Unknown) diff --git a/examples/docs/nestedobj.schema.md b/examples/docs/nestedobj.schema.md new file mode 100644 index 00000000..f3459efc --- /dev/null +++ b/examples/docs/nestedobj.schema.md @@ -0,0 +1,93 @@ +--- +template: reference +foo: bar +--- + +# Nested Object Schema + +``` +https://example.com/schemas/nestedobject +``` + + +| [Abstract](../abstract.md) | Extensible | [Status](../status.md) | Identifiable | Custom Properties | Additional Properties | Defined In | +|----------------------------|------------|------------------------|--------------|-------------------|-----------------------|------------| +| Can be instantiated | No | Experimental | No | Forbidden | Forbidden | [nestedobj.schema.json](nestedobj.schema.json) | + +# Nested Object Properties + +| Property | Type | Required | Nullable | Defined by | +|----------|------|----------|----------|------------| +| [settings](#settings) | `object` | Optional | No | Nested Object (this schema) | + +## settings + +settings + +`settings` + +* is optional +* type: `object` +* defined in this schema + +### settings Type + + +`object` with following properties: + + +| Property | Type | Required | +|----------|------|----------| +| `collaborators`| object | Optional | + + + +#### collaborators + +collaborators + +`collaborators` + +* is optional +* type: `object` + +##### collaborators Type + + +`object` with following properties: + + +| Property | Type | Required | +|----------|------|----------| +| `id`| string | Optional | + + + +#### id + + +`id` + +* is optional +* type: `string` + +##### id Type + + +`string` + + + + + + + + + + + + + + + + diff --git a/examples/generated-schemas/nestedobj.schema.json b/examples/generated-schemas/nestedobj.schema.json new file mode 100644 index 00000000..62f814d6 --- /dev/null +++ b/examples/generated-schemas/nestedobj.schema.json @@ -0,0 +1,29 @@ +{ + "$id": "https://example.com/schemas/nestedobject", + "$schema": "http://json-schema.org/draft-07/schema", + "title": "Nested Object", + "type": "object", + "properties": { + "settings": { + "description": "settings", + "type": "object", + "properties": { + "collaborators": { + "description": "collaborators", + "type": "object", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "properties": { + "id": { + "type": "string" + } + } + } + } + } + }, + "additionalProperties": false +} \ No newline at end of file diff --git a/examples/schemas/nestedobj.schema.json b/examples/schemas/nestedobj.schema.json new file mode 100644 index 00000000..f068d4e5 --- /dev/null +++ b/examples/schemas/nestedobj.schema.json @@ -0,0 +1,29 @@ +{ + "$id": "https://example.com/schemas/nestedobject", + "$schema": "http://json-schema.org/draft-07/schema", + "title": "Nested Object", + "type": "object", + "properties": { + "settings": { + "description": "settings", + "type": "object", + "properties": { + "collaborators": { + "description": "collaborators", + "type": "object", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "properties": { + "id": { + "type": "string" + } + } + } + } + } + }, + "additionalProperties": false +} diff --git a/spec/examples/README.md b/spec/examples/README.md index 0502d30d..7a6a4240 100644 --- a/spec/examples/README.md +++ b/spec/examples/README.md @@ -20,6 +20,7 @@ * [Extensible](./extensible.schema.md) – `https://example.com/schemas/extensible` (Unknown) * [Identifiable](./identifiable.schema.md) – `https://example.com/schemas/identifiable` (Unknown) * [Join Types](./join.schema.md) – `https://example.com/schemas/join` (Unknown) +* [Nested Object](./nestedobj.schema.md) – `https://example.com/schemas/nestedobject` (Unknown) * [Pattern Properties](./pattern.schema.md) – `https://example.com/schemas/pattern` (Unknown) * [Simple](./simple.schema.md) – `https://example.com/schemas/simple` (Unknown) * [Simple Types](./simpletypes.schema.md) – `https://example.com/schemas/simpletypes` (Unknown) diff --git a/spec/examples/nestedobj.schema.md b/spec/examples/nestedobj.schema.md new file mode 100644 index 00000000..f3459efc --- /dev/null +++ b/spec/examples/nestedobj.schema.md @@ -0,0 +1,93 @@ +--- +template: reference +foo: bar +--- + +# Nested Object Schema + +``` +https://example.com/schemas/nestedobject +``` + + +| [Abstract](../abstract.md) | Extensible | [Status](../status.md) | Identifiable | Custom Properties | Additional Properties | Defined In | +|----------------------------|------------|------------------------|--------------|-------------------|-----------------------|------------| +| Can be instantiated | No | Experimental | No | Forbidden | Forbidden | [nestedobj.schema.json](nestedobj.schema.json) | + +# Nested Object Properties + +| Property | Type | Required | Nullable | Defined by | +|----------|------|----------|----------|------------| +| [settings](#settings) | `object` | Optional | No | Nested Object (this schema) | + +## settings + +settings + +`settings` + +* is optional +* type: `object` +* defined in this schema + +### settings Type + + +`object` with following properties: + + +| Property | Type | Required | +|----------|------|----------| +| `collaborators`| object | Optional | + + + +#### collaborators + +collaborators + +`collaborators` + +* is optional +* type: `object` + +##### collaborators Type + + +`object` with following properties: + + +| Property | Type | Required | +|----------|------|----------| +| `id`| string | Optional | + + + +#### id + + +`id` + +* is optional +* type: `string` + +##### id Type + + +`string` + + + + + + + + + + + + + + + + diff --git a/spec/lib/integrationTest.spec.js b/spec/lib/integrationTest.spec.js index 061d7de4..8ed47971 100644 --- a/spec/lib/integrationTest.spec.js +++ b/spec/lib/integrationTest.spec.js @@ -55,7 +55,7 @@ describe('Compare results', () => { ls.on('close', code => { expect(code).toEqual(0); const files = readdirSync('./spec/examples').filter(item => !(/(^|\/)\.[^\/\.]/g).test(item)); - expect(files.length).toEqual(21); + expect(files.length).toEqual(22); files.forEach(file => { if (statSync('./spec/examples/' + file).isFile()) { diff --git a/templates/md/nested-property.ejs b/templates/md/nested-property.ejs index 0d192f3a..5f1b6cb9 100644 --- a/templates/md/nested-property.ejs +++ b/templates/md/nested-property.ejs @@ -8,8 +8,9 @@ #### <%=name %> <% if (schema.title) { %>##### <%= schema.title %><% } %> - +<% if (schema.description) { %> <%- (""+schema.description).replace(/\n/g, '\n\n') %> +<% } %> `<%=name %>` @@ -44,6 +45,8 @@ The value of this property **must** be equal to one of the [known values below]( <%- include("number-type",{schema:schema,_:_}) %> <% } else if (schema.type==="boolean") { %> <%- include("boolean-type",{schema:schema,_:_}) %> +<% } else if (schema.type==="object") { %> +<%- include("object-type",{schema:schema,_:_}) %> <% } else if (schema.type==="array") { %> <%- include("array-type",{schema:schema,_:_,nested:false,ejs:ejs}) %> <% } else if (schema.$ref!==undefined) { %>