-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathgenerate.js
More file actions
31 lines (23 loc) · 905 Bytes
/
generate.js
File metadata and controls
31 lines (23 loc) · 905 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'use strict';
var fs = require('fs');
var doT = require('dot');
var instructions = require('../instructions');
generateSchema('schema');
generateSchema('schema', true);
generateSchema('evaluate');
function generateSchema(schemaName, strictSchema) {
var template = getSchemaTemplate(schemaName);
var schemaStr = template({ instructions: instructions, strictSchema: strictSchema });
schemaStr = JSON.stringify(JSON.parse(schemaStr), null, ' ');
var schemaFile = getFileName(schemaName);
if (strictSchema) schemaFile = schemaFile.replace('.json', '_strict.json');
fs.writeFileSync(schemaFile, schemaStr);
}
function getSchemaTemplate(schemaName) {
var fileName = getFileName(schemaName) + '.dot';
var templateStr = fs.readFileSync(fileName, 'utf8');
return doT.compile(templateStr);
}
function getFileName(schemaName) {
return __dirname + '/../schema/' + schemaName + '.json';
}