|
|
'use strict';
|
|
|
|
|
|
function isString(variable) {
|
|
|
return typeof variable === 'string' || variable instanceof String;
|
|
|
}
|
|
|
|
|
|
function isNumber(variable) {
|
|
|
return typeof variable === 'number' || variable instanceof Number;
|
|
|
}
|
|
|
|
|
|
function isBoolean(variable) {
|
|
|
return typeof variable === 'boolean';
|
|
|
}
|
|
|
|
|
|
function isArray(variable) {
|
|
|
return Array.isArray(variable);
|
|
|
}
|
|
|
|
|
|
function isFunction(variable) {
|
|
|
return typeof variable === 'function';
|
|
|
}
|
|
|
|
|
|
function isObject(variable) {
|
|
|
return variable !== null && typeof variable === 'object';
|
|
|
}
|
|
|
|
|
|
function isNull(variable) {
|
|
|
return variable === null;
|
|
|
}
|
|
|
|
|
|
function isUndefined(variable) {
|
|
|
return variable === undefined;
|
|
|
}
|
|
|
|
|
|
function pack() {
|
|
|
var result = {};
|
|
|
|
|
|
for (var i = 0, l = arguments.length; i < l; i++) {
|
|
|
var obj = arguments[i];
|
|
|
|
|
|
if (obj) {
|
|
|
for (var key in obj) {
|
|
|
if (obj.hasOwnProperty(key)) {
|
|
|
result[key] = obj[key];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
function offsetVector(vector, x, y) {
|
|
|
switch (vector.type) {
|
|
|
case 'ellipse':
|
|
|
case 'rect':
|
|
|
vector.x += x;
|
|
|
vector.y += y;
|
|
|
break;
|
|
|
case 'line':
|
|
|
vector.x1 += x;
|
|
|
vector.x2 += x;
|
|
|
vector.y1 += y;
|
|
|
vector.y2 += y;
|
|
|
break;
|
|
|
case 'polyline':
|
|
|
for (var i = 0, l = vector.points.length; i < l; i++) {
|
|
|
vector.points[i].x += x;
|
|
|
vector.points[i].y += y;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function fontStringify(key, val) {
|
|
|
if (key === 'font') {
|
|
|
return 'font';
|
|
|
}
|
|
|
return val;
|
|
|
}
|
|
|
|
|
|
function getNodeId(node) {
|
|
|
if (node.id) {
|
|
|
return node.id;
|
|
|
}
|
|
|
|
|
|
if (isArray(node.text)) {
|
|
|
for (var i = 0, l = node.text.length; i < l; i++) {
|
|
|
var n = node.text[i];
|
|
|
var nodeId = getNodeId(n);
|
|
|
if (nodeId) {
|
|
|
return nodeId;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
|
isString: isString,
|
|
|
isNumber: isNumber,
|
|
|
isBoolean: isBoolean,
|
|
|
isArray: isArray,
|
|
|
isFunction: isFunction,
|
|
|
isObject: isObject,
|
|
|
isNull: isNull,
|
|
|
isUndefined: isUndefined,
|
|
|
pack: pack,
|
|
|
fontStringify: fontStringify,
|
|
|
offsetVector: offsetVector,
|
|
|
getNodeId: getNodeId
|
|
|
};
|
|
|
|