From 915d67bc07dba8abb7ac9dd17408091ca8874575 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 19 Nov 2020 02:17:03 +0300 Subject: [PATCH] minor tweaks... Signed-off-by: Alex A. Naanou --- object.js | 6 ++++++ package.json | 4 ++-- test.js | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/object.js b/object.js index 4d32e21..48f48b2 100755 --- a/object.js +++ b/object.js @@ -1153,6 +1153,10 @@ function(base, ...objects){ // mixin(obj) // -> obj // +// mixin(mode, obj) +// mixin(obj, mode) +// -> obj +// // // Example: // @@ -1182,6 +1186,8 @@ Constructor('Mixin', { // mixin to target... __call__: function(_, target, mode=this.mode){ + typeof(target) == typeof('str') + && ([mode, target] = arguments) return mode == 'flat' ? mixinFlat(target, this.data) : mixin(target, this.data) }, diff --git a/package.json b/package.json index 54f7f4e..b9aad34 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ig-object", - "version": "5.4.0", + "version": "5.4.1", "description": "", "main": "object.js", "scripts": { @@ -25,7 +25,7 @@ }, "homepage": "https://github.com/flynx/object.js#readme", "devDependencies": { - "c8": "^7.3.4", + "c8": "^7.3.5", "colors": "^1.4.0", "ig-test": "^1.4.6" } diff --git a/test.js b/test.js index eda5b41..8478b7a 100755 --- a/test.js +++ b/test.js @@ -710,6 +710,42 @@ var cases = test.Cases({ assert(typeof(xx.call) == 'function', 'xx.call is a function') assert(xx.call(null), 'xx.call(null)') }, + mixins: function(assert){ + + var A = assert(object.Mixin('A', { + a: 'aaa', + })) + assert(A.data.a == 'aaa') + + var B = assert(object.Mixin('B', { + b: 'bbb' + })) + assert(B.data.b == 'bbb') + + var C = assert(object.Mixin('C', + A, + B, + { + get c(){ + return 'ccc' }, + })) + assert(C.data.a == 'aaa') + assert(C.data.b == 'bbb') + assert(C.data.c == 'ccc') + + var x = assert(C({})) + + assert(x.a == 'aaa') + assert(x.b == 'bbb') + assert(x.c == 'ccc') + + var y = assert(C({}, 'flat')) + + assert(y.a == 'aaa') + assert(y.b == 'bbb') + assert(y.c == 'ccc') + + }, })