Skip to content

Instantly share code, notes, and snippets.

@amilajack
Created January 23, 2019 18:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amilajack/ad811f928589a124b9bd6d507c6bca65 to your computer and use it in GitHub Desktop.
Save amilajack/ad811f928589a124b9bd6d507c6bca65 to your computer and use it in GitHub Desktop.
esnextbin sketch
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ESNextbin Sketch</title>
<!-- put additional styles and scripts here -->
</head>
<body>
<!-- put markup and other contents here -->
<img src="" alt="">
</body>
</html>
function config(b = {}) {
if (!b.extends || !b.extends.length) return b;
if (!Array.isArray(b.extends)) throw new Error(".extends must be array");
let a = [];
for (let i = 0; i < b.extends.length; i++) {
b.extends[i] = config(b.extends[i]);
}
const f = Object.assign({}, ...b.extends.map(e => e), { ...b });
delete f.extends;
return f;
}
console.log(
config({
extends: [{ extends: [{ bar: "zoo", extends: [{ cow: "cow" }] }] }],
bar: "bar"
})
);
{
"name": "esnextbin-sketch",
"version": "0.0.0",
"dependencies": {
"babel-runtime": "6.26.0"
}
}
'use strict';
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function config() {
var b = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (!b.extends || !b.extends.length) return b;
if (!Array.isArray(b.extends)) throw new Error('.extends must be array');
var a = [];
for (var i = 0; i < b.extends.length; i++) {
b.extends[i] = config(b.extends[i]);
}
var f = _extends3.default.apply(undefined, [{}].concat((0, _toConsumableArray3.default)(b.extends.map(function (e) {
return e;
})), [(0, _extends3.default)({}, b)]));
delete f.extends;
return f;
}
console.log(config({ extends: [{ extends: [{ bar: 'zoo', extends: [{ cow: 'cow' }] }] }], bar: 'bar' }));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment