rapnc
Version:
Node client for RAP 1.0
78 lines (73 loc) • 2.34 kB
JavaScript
function toJSON(params, obj) {
if (!params) {
return;
}
params.forEach(function(param) {
var name = param.identifier;
if (param.id) {
name = name + '|_' + param.id + '_';
}
var dataType = param.data_type;
if (dataType == 'object') {
obj[name] = {};
toJSON(param.params, obj[name]);
} else if (dataType == 'array<object>') {
obj[name] = [{}];
toJSON(param.params, obj[name][0]);
} else {
var value;
if (param.remark) {
value = param.remark.replace(/^@[\w\d_-]+=/, '').trim();
} else {
value = '1';
}
if (dataType == 'number') {
// 尽力转化成数字
var num = Number(value);
if (!isNaN(num)) {
value = num;
}
} else if (dataType == 'string') {
// TODO if @mock?
//value = '' + value;
} else if (dataType == 'boolean') {
// 尽力转化成boolean
if (value === 'true' || value === true) {
value = true;
} else if (value === 'false' || value === false) {
value = false;
}
//value = !!value;
} else {
value = value || 1;
}
if (dataType.indexOf('array') != -1) {
if (value.indexOf('[') != 0) {
value = [value];
} else {
value = JSON.parse(value);
}
}
if (param.identifier.indexOf('|') != -1) {
// 意味着从中选一个
if (typeof value == 'string' && value[0] == '[' && value[value.length - 1] == ']') {
value = JSON.parse(value);
}
}
obj[name] = value;
}
})
return obj;
}
function getMockjsRules(origin, prop) {
if (!origin) {
return;
}
prop = prop || 'responseParams';
var responses = origin[prop];
if (!responses || responses.length == 0) {
return;
}
return toJSON(responses, {});
}
exports.getMockjsRules = getMockjsRules;