-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathgenerate.js
More file actions
37 lines (29 loc) · 1003 Bytes
/
generate.js
File metadata and controls
37 lines (29 loc) · 1003 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
32
33
34
35
36
37
'use strict';
var fs = require('fs');
var doT = require('dot');
var instructions = require('../instructions');
var macros = require('../macros');
generateSchema('schema');
generateSchema('schema', true);
generateSchema('expand_macros');
generateSchema('evaluate');
function generateSchema(schemaName, strictSchema) {
var template = getSchemaTemplate(schemaName);
var schemaStr = template({
instructions: instructions,
macros: macros,
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';
}