108 lines
2.6 KiB
JavaScript
108 lines
2.6 KiB
JavaScript
|
/*
|
||
|
* Utils functions
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
var crypt = require('crypto');
|
||
|
|
||
|
/**
|
||
|
* Break string str each maxLen symbols
|
||
|
* @param str
|
||
|
* @param maxLen
|
||
|
* @returns {string}
|
||
|
*/
|
||
|
module.exports.linebrk = function (str, maxLen) {
|
||
|
var res = '';
|
||
|
var i = 0;
|
||
|
while (i + maxLen < str.length) {
|
||
|
res += str.substring(i, i + maxLen) + "\n";
|
||
|
i += maxLen;
|
||
|
}
|
||
|
return res + str.substring(i, str.length);
|
||
|
};
|
||
|
|
||
|
module.exports.detectEnvironment = function () {
|
||
|
if (typeof(window) !== 'undefined' && window && !(process && process.title === 'node')) {
|
||
|
return 'browser';
|
||
|
}
|
||
|
|
||
|
return 'node';
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Trying get a 32-bit unsigned integer from the partial buffer
|
||
|
* @param buffer
|
||
|
* @param offset
|
||
|
* @returns {Number}
|
||
|
*/
|
||
|
module.exports.get32IntFromBuffer = function (buffer, offset) {
|
||
|
offset = offset || 0;
|
||
|
var size = 0;
|
||
|
if ((size = buffer.length - offset) > 0) {
|
||
|
if (size >= 4) {
|
||
|
return buffer.readUInt32BE(offset);
|
||
|
} else {
|
||
|
var res = 0;
|
||
|
for (var i = offset + size, d = 0; i > offset; i--, d += 2) {
|
||
|
res += buffer[i - 1] * Math.pow(16, d);
|
||
|
}
|
||
|
return res;
|
||
|
}
|
||
|
} else {
|
||
|
return NaN;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
module.exports._ = {
|
||
|
isObject: function (value) {
|
||
|
var type = typeof value;
|
||
|
return !!value && (type == 'object' || type == 'function');
|
||
|
},
|
||
|
|
||
|
isString: function (value) {
|
||
|
return typeof value == 'string' || value instanceof String;
|
||
|
},
|
||
|
|
||
|
isNumber: function (value) {
|
||
|
return typeof value == 'number' || !isNaN(parseFloat(value)) && isFinite(value);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Returns copy of `obj` without `removeProp` field.
|
||
|
* @param obj
|
||
|
* @param removeProp
|
||
|
* @returns Object
|
||
|
*/
|
||
|
omit: function (obj, removeProp) {
|
||
|
var newObj = {};
|
||
|
for (var prop in obj) {
|
||
|
if (!obj.hasOwnProperty(prop) || prop === removeProp) {
|
||
|
continue;
|
||
|
}
|
||
|
newObj[prop] = obj[prop];
|
||
|
}
|
||
|
|
||
|
return newObj;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Strips everything around the opening and closing lines, including the lines
|
||
|
* themselves.
|
||
|
*/
|
||
|
module.exports.trimSurroundingText = function (data, opening, closing) {
|
||
|
var trimStartIndex = 0;
|
||
|
var trimEndIndex = data.length;
|
||
|
|
||
|
var openingBoundaryIndex = data.indexOf(opening);
|
||
|
if (openingBoundaryIndex >= 0) {
|
||
|
trimStartIndex = openingBoundaryIndex + opening.length;
|
||
|
}
|
||
|
|
||
|
var closingBoundaryIndex = data.indexOf(closing, openingBoundaryIndex);
|
||
|
if (closingBoundaryIndex >= 0) {
|
||
|
trimEndIndex = closingBoundaryIndex;
|
||
|
}
|
||
|
|
||
|
return data.substring(trimStartIndex, trimEndIndex);
|
||
|
}
|