StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.2 KiB
112 lines
2.2 KiB
'use strict';
|
|
|
|
var utils = require('../utils');
|
|
|
|
/**
|
|
* Set the given value, or a value was previously cached by `--get`.
|
|
*
|
|
* ```json
|
|
* $ app --set=pkg.name:foo
|
|
* # example: persist `pkg.name` to `store.data.name`
|
|
* $ app --get=pkg.name --set=store.name
|
|
* ```
|
|
* @name set
|
|
* @api public
|
|
*/
|
|
|
|
module.exports = function(app) {
|
|
return function(prop, key, config, next) {
|
|
if (typeof prop === 'undefined') {
|
|
next();
|
|
return;
|
|
}
|
|
|
|
if (utils.isObject(prop)) {
|
|
var temp = prop;
|
|
for (var k in temp) {
|
|
if (temp.hasOwnProperty(k)) {
|
|
prop = k + ':' + temp[k];
|
|
}
|
|
}
|
|
}
|
|
|
|
var cached = app.get('cache.get');
|
|
var name, rest, val;
|
|
var keys = [];
|
|
|
|
if (utils.isObject(prop)) {
|
|
keys = [];
|
|
name = Object.keys(prop)[0];
|
|
val = prop[name];
|
|
} else {
|
|
keys = String(prop).split('.');
|
|
name = keys.shift();
|
|
rest = keys.join('.');
|
|
|
|
if (typeof cached !== 'undefined') {
|
|
val = cached;
|
|
} else {
|
|
keys = [];
|
|
val = {};
|
|
val[rest] = true;
|
|
}
|
|
}
|
|
|
|
utils.assertPlugins(app, name);
|
|
|
|
switch(name) {
|
|
case 'pkg':
|
|
if (keys.length) {
|
|
app.pkg.set(rest, val);
|
|
} else {
|
|
app.pkg.set(val);
|
|
}
|
|
app.pkg.save();
|
|
break;
|
|
case 'config':
|
|
if (keys.length) {
|
|
app.pkg.set([app._name, rest], val);
|
|
} else {
|
|
app.pkg.set(app._name, val);
|
|
}
|
|
app.pkg.save();
|
|
break;
|
|
case 'globals':
|
|
if (keys.length) {
|
|
app.globals.set(rest, val);
|
|
} else {
|
|
app.globals.set(val);
|
|
}
|
|
break;
|
|
case 'store':
|
|
if (keys.length) {
|
|
app.store.set(rest, val);
|
|
} else {
|
|
app.store.set(val);
|
|
}
|
|
break;
|
|
case 'option':
|
|
if (keys.length) {
|
|
app.option(rest, val);
|
|
} else {
|
|
app.option(val);
|
|
}
|
|
break;
|
|
case 'data':
|
|
if (keys.length) {
|
|
app.data(rest, val);
|
|
} else {
|
|
app.data(val);
|
|
}
|
|
break;
|
|
default:
|
|
if (keys.length) {
|
|
app.set(prop, val);
|
|
} else {
|
|
app.set(val);
|
|
}
|
|
break;
|
|
}
|
|
next();
|
|
};
|
|
};
|
|
|