apikana
Version:
Integrated tools for REST API design - アピ
53 lines (47 loc) • 1.57 kB
JavaScript
var File = require('vinyl');
var colors = require('ansi-colors');
var log = require('./log');
var gen = require('./java-gen');
module.exports = function (model, javaPackage, apiName) {
apiName += 'PathVariables';
var contents = '';
return {
start: function () {
contents += 'package ' + javaPackage + ';\n\n';
contents += 'public final class ' + gen.classOf(apiName) + ' {\n';
},
write: function () {
write(model.full);
},
finish: function () {
contents += ' private ' + gen.classOf(apiName) + '(){}\n}';
},
toFile: function () {
log.info('Generated', colors.magenta(gen.classOf(apiName) + '.java'));
return new File({
path: 'java/' + javaPackage.replace(/\./g, '/') + '/' + gen.classOf(apiName) + '.java',
contents: new Buffer(contents)
});
}
};
function write(obj) {
var vars = {};
doWrite(obj);
for (var prop in vars) {
line(1, 'public static final String ' + gen.constOf(prop) + ' = "' + prop + '";');
}
function doWrite(obj) {
for (var prop in obj) {
if (obj[prop] && obj[prop]['/param']) {
vars[prop] = true;
}
if (typeof obj[prop] === 'object') {
doWrite(obj[prop]);
}
}
}
}
function line(level, s) {
contents += gen.pad(level) + s + '\n';
}
};