apikana
Version:
Integrated tools for REST API design - アピ
95 lines (86 loc) • 2.42 kB
JavaScript
var reservedWords = [
'abstract', 'continue', 'for', 'new', 'switch',
'assert', 'default', 'goto', 'package', 'synchronized',
'boolean', 'do', 'if', 'private', 'this',
'break', 'double', 'implements', 'protected', 'throw',
'byte', 'else', 'import', 'public', 'throws',
'case', 'enum', 'instanceof', 'return', 'transient',
'catch', 'extends', 'int', 'short', 'try',
'char', 'final', 'interface', 'static', 'void',
'class', 'finally', 'long', 'strictfp', 'volatile',
'const', 'float', 'native', 'super', 'while'];
var reserved = {};
for (var i = 0; i < reservedWords.length; i++) {
reserved[reservedWords[i]] = true;
}
module.exports = {
constOf: constOf,
classOf: classOf,
fieldOf: fieldOf,
javaType: javaType,
pad: pad
};
function constOf(name) {
var res = '';
for (var i = 0; i < name.length; i++) {
res += name.charAt(i).toUpperCase();
if (i < name.length - 1 && !isUpper(name.charAt(i)) && isUpper(name.charAt(i + 1))) {
res += '_';
}
}
return res;
function isUpper(c) {
return c >= 'A' && c <= 'Z';
}
}
function classOf(name, parents) {
var java = javaOf(name);
var cls = java.substring(0, 1).toUpperCase() + java.substring(1);
if (parents){
while (parents && parents.includes(cls)) {
cls = cls + '_';
}
var res = parents.slice();
res.unshift(cls);
return res;
}
return cls;
}
function fieldOf(name) {
var java = javaOf(name);
var lower = java.substring(0, 1).toLowerCase() + java.substring(1);
return reserved[lower] ? lower + '_' : lower;
}
function javaOf(name) {
var s = '';
var removed = false;
for (var i = 0; i < name.length; i++) {
var c = name.charAt(i);
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
s += removed ? c.toUpperCase() : c;
removed = false;
} else {
removed = true;
}
}
return s;
}
function javaType(type) {
switch (type) {
case 'number':
return 'double';
case 'integer':
return 'int';
case 'boolean':
return 'boolean';
default:
return 'String';
}
}
function pad(n) {
var s = '';
while (s.length < 4 * n) {
s += ' ';
}
return s;
}