|
@@ -6,6 +6,7 @@ var async = require("async");
|
|
function uberfactory(uuid, slugger) {
|
|
function uberfactory(uuid, slugger) {
|
|
|
|
|
|
var ignores = [
|
|
var ignores = [
|
|
|
|
+ "_isdirty",
|
|
"uninherits",
|
|
"uninherits",
|
|
"inherits",
|
|
"inherits",
|
|
"unextends",
|
|
"unextends",
|
|
@@ -18,6 +19,8 @@ function uberfactory(uuid, slugger) {
|
|
"emitas",
|
|
"emitas",
|
|
"data2",
|
|
"data2",
|
|
"getStuff",
|
|
"getStuff",
|
|
|
|
+ "getStuff2",
|
|
|
|
+ "getStuff3",
|
|
"pingup",
|
|
"pingup",
|
|
"data",
|
|
"data",
|
|
"metas2",
|
|
"metas2",
|
|
@@ -93,6 +96,11 @@ function uberfactory(uuid, slugger) {
|
|
if (parent) {
|
|
if (parent) {
|
|
this.parents[parent.name] = parent;
|
|
this.parents[parent.name] = parent;
|
|
this.path = parent.path + "/" + name
|
|
this.path = parent.path + "/" + name
|
|
|
|
+ if(parent._metas.copyonchild){
|
|
|
|
+ _.map(parent._metas.copyonchild,function(k){
|
|
|
|
+ self._metas[k] = parent._metas[k];
|
|
|
|
+ })
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (isroot) {
|
|
if (isroot) {
|
|
this.isroot = true;
|
|
this.isroot = true;
|
|
@@ -394,11 +402,64 @@ function uberfactory(uuid, slugger) {
|
|
return par.getStuff.apply(par, [stuff, applybefore, "isa_" + named_, true]);
|
|
return par.getStuff.apply(par, [stuff, applybefore, "isa_" + named_, true]);
|
|
}))
|
|
}))
|
|
arr = arr.filter(function(a) {
|
|
arr = arr.filter(function(a) {
|
|
- return a.data ? a.data.length > 0 : false
|
|
|
|
|
|
+ return a.data ? (typeof(a.data) === "function" || a.data.length > 0) : false
|
|
});
|
|
});
|
|
return arr
|
|
return arr
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ electra.prototype.getStuff2 = function(stuff, applybefore, named_, dd, inas) {
|
|
|
|
+ var self = this;
|
|
|
|
+ var named = named_ || "data";
|
|
|
|
+ var dd = dd || false;
|
|
|
|
+ var inass = inas || [];
|
|
|
|
+ var obj = {
|
|
|
|
+ name: this.path,
|
|
|
|
+ from: named,
|
|
|
|
+ data: applybefore(getpath(this, stuff)),
|
|
|
|
+ inas: inass
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var arr = [obj];
|
|
|
|
+ if (dd) {
|
|
|
|
+ return arr
|
|
|
|
+ }
|
|
|
|
+ arr = [].concat.apply(arr, _.map(this._inherits, function(par, nam) {
|
|
|
|
+ return par.getStuff2.apply(par, [stuff, applybefore, "inherit_" + named_, false, inass.concat([self.path])]);
|
|
|
|
+ }))
|
|
|
|
+ arr = [].concat.apply(arr, _.map(this.parents, function(par, nam) {
|
|
|
|
+ return par.getStuff2.apply(par, [stuff, applybefore, "parent_" + named_, false, inass.concat([self.path])]);
|
|
|
|
+ }))
|
|
|
|
+ arr = [].concat.apply(arr, _.map(this._isa, function(par, nam) {
|
|
|
|
+ return par.getStuff2.apply(par, [stuff, applybefore, "isa_" + named_, false, inass.concat([self.path])]);
|
|
|
|
+ }))
|
|
|
|
+ arr = arr.filter(function(a) {
|
|
|
|
+ return a.data ? (typeof(a.data) === "function" || a.data.length > 0) : false
|
|
|
|
+ });
|
|
|
|
+ return arr
|
|
|
|
+ }
|
|
|
|
+ electra.prototype.getStuff3 = function(stuff, applybefore, named_, dd) {
|
|
|
|
+ var named = named_ || "data";
|
|
|
|
+ var dd = dd || false;
|
|
|
|
+ var obj = {
|
|
|
|
+ name: this.path,
|
|
|
|
+ from: named,
|
|
|
|
+ data: applybefore(getpath(this, stuff))
|
|
|
|
+ }
|
|
|
|
+ var arr = [obj];
|
|
|
|
+ if (dd) {
|
|
|
|
+ return arr
|
|
|
|
+ }
|
|
|
|
+ arr = [].concat.apply(arr, _.map(this._inherits, function(par, nam) {
|
|
|
|
+ return par.getStuff.apply(par, [stuff, applybefore, "inherit_" + named_]);
|
|
|
|
+ }))
|
|
|
|
+ arr = [].concat.apply(arr, _.map(this.parents, function(par, nam) {
|
|
|
|
+ return par.getStuff.apply(par, [stuff, applybefore, "parent_" + named_]);
|
|
|
|
+ }))
|
|
|
|
+ arr = arr.filter(function(a) {
|
|
|
|
+ return a.data ? (typeof(a.data) === "function" || a.data.length > 0) : false
|
|
|
|
+ });
|
|
|
|
+ return arr
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
electra.prototype.pingup = function() {
|
|
electra.prototype.pingup = function() {
|
|
@@ -531,7 +592,9 @@ function uberfactory(uuid, slugger) {
|
|
|
|
|
|
electra.prototype.exportSync = function(path, serializers) {
|
|
electra.prototype.exportSync = function(path, serializers) {
|
|
var self = this;
|
|
var self = this;
|
|
-
|
|
|
|
|
|
+ if (self._metas.unsaveable) {
|
|
|
|
+ return undefined;
|
|
|
|
+ }
|
|
var obj = self.innerExport(path, serializers);
|
|
var obj = self.innerExport(path, serializers);
|
|
|
|
|
|
var collect = _.map(self.children, function(child, name) {
|
|
var collect = _.map(self.children, function(child, name) {
|
|
@@ -565,6 +628,9 @@ function uberfactory(uuid, slugger) {
|
|
}
|
|
}
|
|
electra.prototype.innerExport = function(path, serializers) {
|
|
electra.prototype.innerExport = function(path, serializers) {
|
|
var self = this;
|
|
var self = this;
|
|
|
|
+ if (self._metas.unsaveable) {
|
|
|
|
+ return {};
|
|
|
|
+ }
|
|
var obj = {};
|
|
var obj = {};
|
|
// obj._id = self._id;
|
|
// obj._id = self._id;
|
|
obj.name = self.name;
|
|
obj.name = self.name;
|
|
@@ -626,8 +692,7 @@ function uberfactory(uuid, slugger) {
|
|
if (serializers && serializers[ke]) {
|
|
if (serializers && serializers[ke]) {
|
|
obj[ke] = serializers[ke](val);
|
|
obj[ke] = serializers[ke](val);
|
|
} else {
|
|
} else {
|
|
- _.map(val,function(cval,cprop){
|
|
|
|
- })
|
|
|
|
|
|
+ _.map(val, function(cval, cprop) {})
|
|
obj[ke] = val;
|
|
obj[ke] = val;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -638,13 +703,15 @@ function uberfactory(uuid, slugger) {
|
|
return obj
|
|
return obj
|
|
}
|
|
}
|
|
|
|
|
|
- function seriadeep(rest, obj, serializers,one) {
|
|
|
|
- if(one>2){return }
|
|
|
|
|
|
+ function seriadeep(rest, obj, serializers, one) {
|
|
|
|
+ if (one > 2) {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
_.map(rest, function(val, ke) {
|
|
_.map(rest, function(val, ke) {
|
|
if (typeof(val) === "function") {
|
|
if (typeof(val) === "function") {
|
|
obj[ke] = "$$$FUNCTION$$$" + val;
|
|
obj[ke] = "$$$FUNCTION$$$" + val;
|
|
} else if (typeof(val) === "object") {
|
|
} else if (typeof(val) === "object") {
|
|
- obj[ke] = seriadeep(val, obj, serializers, (one||1) +1);
|
|
|
|
|
|
+ obj[ke] = seriadeep(val, obj, serializers, (one || 1) + 1);
|
|
} else {
|
|
} else {
|
|
if (serializers && serializers[ke]) {
|
|
if (serializers && serializers[ke]) {
|
|
obj[ke] = serializers[ke](val)
|
|
obj[ke] = serializers[ke](val)
|
|
@@ -754,6 +821,7 @@ function setpath(obj, path, value) {
|
|
|
|
|
|
|
|
|
|
uberfactory.ignores = ignores = [
|
|
uberfactory.ignores = ignores = [
|
|
|
|
+ "_isdirty",
|
|
"inherits",
|
|
"inherits",
|
|
"uninherits",
|
|
"uninherits",
|
|
"unextends",
|
|
"unextends",
|
|
@@ -766,6 +834,8 @@ uberfactory.ignores = ignores = [
|
|
"emitas",
|
|
"emitas",
|
|
"data2",
|
|
"data2",
|
|
"getStuff",
|
|
"getStuff",
|
|
|
|
+ "getStuff2",
|
|
|
|
+ "getStuff3",
|
|
"pingup",
|
|
"pingup",
|
|
"data",
|
|
"data",
|
|
"metas2",
|
|
"metas2",
|