Skip to content

Commit

Permalink
feat: disable header.ejs using console args
Browse files Browse the repository at this point in the history
* feat: disable header.ejs over console args

Allow the user to disable the header.ejs over console args

re #153

* feat: disable header.ejs over console args

Add test for the new Parameter and add this option to README.md

re #153

* feat: disable header.ejs over console args

Moved output for the new test

re #153

* feat: disable header.ejs over console args

Test fix

re #153

* Update README.md

Co-Authored-By: Lars Trieloff <[email protected]>

* Update README.md

Co-Authored-By: Lars Trieloff <[email protected]>

* Update lib/markdownWriter.js

Co-Authored-By: Lars Trieloff <[email protected]>

* feat: disable header.ejs over console args

Add the suggested default value for the new parameter

re #153

* feat: disable header.ejs over console args

Fixed test

re #153

fixes #153
  • Loading branch information
Claymore1337 authored and trieloff committed Aug 20, 2019
1 parent 2d56644 commit 104452f
Show file tree
Hide file tree
Showing 6 changed files with 559 additions and 10 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ $ jsonschema2md -d examples/schemas -o examples/docs -v 06 -i temp/myFiles



## Disable header template
In some cases you do not need a header because it does not provide any useful information. With the `--header` (or `-h`) parameter you can disable the inclusion of headers.

```bash
# run against JSON Schema Draft 06
$ jsonschema2md -d examples/schemas -o examples/docs -v 06 -h false
```

## Using JSON Schema Markdown Tools from `npm`

You can conveniently use the JSON Schema Markdown Tools from `npm`. This makes it possible to set up a conversion toolchain for your JSON Schema project that is driven entirely by `npm`. To do so, first define the dependency by adding this to your `"devDependencies"` section of `package.json`
Expand Down
3 changes: 3 additions & 0 deletions cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ var argv = require('optimist')
})
.alias('i', 'i18n')
.describe('i', 'path to a locales folder with an en.json file in it. This file will be used for all text parts in all templates')
.alias('h', 'header')
.describe('h', 'if the value is false the header will be skipped')
.default('h', true)
.argv;

const docs = _.fromPairs(_.toPairs(argv).filter(([ key, value ]) => { return key.startsWith('link-'); }).map(([ key, value ]) => { return [ key.substr(5), value ];}));
Expand Down
254 changes: 254 additions & 0 deletions examples/docsWithoutHeader/arrays.schema.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
# Arrays Properties

| Property | Type | Required | Nullable | Defined by |
| --------------------------------- | ------------ | ---------- | -------- | ------------------------------------------ |
| [JoinTypelist](#jointypelist) | `array` | Optional | No | Arrays (this schema) |
| [boollist](#boollist) | `boolean[]` | Optional | No | Arrays (this schema) |
| [coordinatelist](#coordinatelist) | `number[][]` | Optional | No | Arrays (this schema) |
| [intlist](#intlist) | `integer[]` | Optional | No | Arrays (this schema) |
| [list](#list) | `string[]` | Optional | No | Arrays (this schema) |
| [listlist](#listlist) | `array[]` | Optional | No | Arrays (this schema) |
| [numlist](#numlist) | `number[]` | Optional | No | Arrays (this schema) |
| [objectlist](#objectlist) | `object[]` | Optional | No | Arrays (this schema) |
| [stringlistlist](#stringlistlist) | `string[][]` | Optional | No | Arrays (this schema) |
| `*` | any | Additional | Yes | this schema _allows_ additional properties |

## JoinTypelist

An array of simple objects

`JoinTypelist`

- is optional
- type: `array`
- defined in this schema

### JoinTypelist Type

Array type: `array`

All items must be of the type:

**One** of the following _conditions_ need to be fulfilled.

#### Condition 1

`object` with following properties:

| Property | Type | Required |
| -------- | ------ | -------- |
| `foo` | string | Optional |

#### foo

A simple string.

`foo`

- is optional
- type: `string`

##### foo Type

`string`

##### foo Example

```json
hello
```

#### Condition 2

`object` with following properties:

| Property | Type | Required |
| -------- | ------ | -------- |
| `bar` | string | Optional |

#### bar

A simple string.

`bar`

- is optional
- type: `string`

##### bar Type

`string`

##### bar Example

```json
world
```

## boollist

This is an array

`boollist`

- is optional
- type: `boolean[]`
- at least `1` items in the array
- defined in this schema

### boollist Type

Array type: `boolean[]`

All items must be of the type: `boolean`

## coordinatelist

This is an array of coordinates in three-dimensional space.

`coordinatelist`

- is optional
- type: `number[][]` (nested array)
- no more than `10` items in the array
- defined in this schema

### coordinatelist Type

Nested array type: `number[]`

All items must be of the type: `number`

- minimum value: `0`
- maximum value: `10`

A coordinate, specified by `x`, `y`, and `z` values

## intlist

This is an array

`intlist`

- is optional
- type: `integer[]`
- between `1` and `10` items in the array
- defined in this schema

### intlist Type

Array type: `integer[]`

All items must be of the type: `integer`

## list

This is an array

`list`

- is optional
- type: `string[]`
- defined in this schema

### list Type

Array type: `string[]`

All items must be of the type: `string`

## listlist

This is an array of arrays

`listlist`

- is optional
- type: `array[]` (nested array)
- defined in this schema

### listlist Type

Nested array type: `array`

## numlist

This is an array

`numlist`

- is optional
- type: `number[]`
- no more than `10` items in the array
- defined in this schema

### numlist Type

Array type: `number[]`

All items must be of the type: `number`

- minimum value: `10`

## objectlist

An array of simple objects

`objectlist`

- is optional
- type: `object[]`
- defined in this schema

### objectlist Type

Array type: `object[]`

All items must be of the type: `object` with following properties:

| Property | Type | Required |
| -------- | ------- | ------------ |
| `a` | string | **Required** |
| `b` | integer | Optional |

#### a

The a property

`a`

- is **required**
- type: `string`

##### a Type

`string`

#### b

The b property

`b`

- is optional
- type: `integer`

##### b Type

`integer`

## stringlistlist

This is an array of arrays of strings

`stringlistlist`

- is optional
- type: `string[][]` (nested array)
- defined in this schema

### stringlistlist Type

Nested array type: `string[]`

All items must be of the type: `string`
18 changes: 10 additions & 8 deletions lib/markdownWriter.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,17 +175,19 @@ const generateMarkdown = function(filename, schema, schemaPath, outDir, dependen
//console.log(dependencyMap);
// this structure allows us to have separate templates for each element. Instead of having
// one huge template, each block can be built individually
let multi = [
[ 'frontmatter.ejs', { meta: schema.metaElements } ],
[ 'header.ejs', {
outDir = outDir ? outDir : path.resolve(path.join('.', 'out'));
let multi = [];
multi.push([ 'frontmatter.ejs', { meta: schema.metaElements } ]);
if (!consoleArgs||consoleArgs.header){
multi.push([ 'header.ejs', {
i18n: i18n,
schema: schema,
dependencies: flatten(dependencyMap),
table: headers(schema, schemaPath, filename, docs).render() } ],
//[ 'divider.ejs', null ],
//[ 'topSchema.ejs', ctx ],
[ 'examples.ejs', { i18n: i18n, examples: stringifyExamples(schema.examples), title: schema.title } ]
];
table: headers(schema, schemaPath, filename, docs).render() } ]);
}
//multi.push(['divider.ejs', null ]);
//multi.push(['topSchema.ejs', ctx ]);
multi.push([ 'examples.ejs', { examples: stringifyExamples(schema.examples), title: schema.title, i18n: i18n } ]);
const required = []; //to store required of whole schema, even those in definitions

// Processing schema.definitions before schema.properties to get any required properties present in definitions
Expand Down
Loading

0 comments on commit 104452f

Please sign in to comment.