codess
Version:
vscode代码片段管理器,通过 本地包(本地某个文件夹) 或官网的 远程包(代码片段集合) 生成本地项目的 vscode 代码片段配置。
122 lines (121 loc) • 3.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectUtils = void 0;
const is_1 = require("../is");
class ObjectUtils {
static getPro(obj, key) {
if (typeof obj != 'object') {
return;
}
let is;
for (let i in obj) {
is = false;
switch (true) {
case typeof key == 'function':
is = key(i);
break;
case key instanceof RegExp:
is = key.test(i);
break;
default:
is = i == key;
break;
}
if (is) {
return obj[i];
}
}
}
static clone(_data) {
return JSON.parse(JSON.stringify(_data));
}
static clone2(data) {
if ((0, is_1.isArray)(data)) {
return data.map((_) => {
return ObjectUtils.clone2(_);
});
}
if ((0, is_1.isMap)(data)) {
return new Map(ObjectUtils.clone2([...data]));
}
if ((0, is_1.isDate)(data)) {
return new Date(data);
}
if ((0, is_1.isObject)(data)) {
let _data = {};
for (let i in data) {
_data[i] = ObjectUtils.clone2(data[i]);
}
return _data;
}
return data;
}
static propGet(obj, props) {
props = Array.isArray(props) ? props : [props];
let o = {};
for (let key of props) {
if ((0, is_1.isArray)(key)) {
o[key[0]] = ObjectUtils.getPro(obj, key[1]);
}
else {
o[key] = obj[key];
}
}
return o;
}
static same(a, b) {
if (a === b) {
return true;
}
if (typeof a != typeof b) {
return a === b;
}
if (typeof a != 'object' || !a || !b) {
return a === b;
}
for (let i in a) {
if (!(i in b) || !ObjectUtils.same(a[i], b[i])) {
return false;
}
}
for (let i in b) {
if (!(i in a) || !ObjectUtils.same(a[i], b[i])) {
return false;
}
}
return true;
}
static merge(a, ...bs) {
for (let b of bs) {
for (let i in b) {
if ((0, is_1.isArray)(a[i]) && (0, is_1.isArray)(b[i])) {
a[i] = [...a[i], ...b[i]];
continue;
}
if ((0, is_1.isObject)(a[i]) && (0, is_1.isObject)(b[i])) {
ObjectUtils.merge(a[i], b[i]);
continue;
}
a[i] = b[i];
}
}
return a;
}
static replace(a, ...bs) {
for (let b of bs) {
for (let i in b) {
if ((0, is_1.isArray)(a[i]) && (0, is_1.isArray)(b[i])) {
a[i] = [...b[i]];
continue;
}
if ((0, is_1.isObject)(a[i]) && (0, is_1.isObject)(b[i])) {
ObjectUtils.replace(a[i], b[i]);
continue;
}
a[i] = b[i];
}
}
return a;
}
}
exports.ObjectUtils = ObjectUtils;