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.
126 lines
2.6 KiB
126 lines
2.6 KiB
4 years ago
|
'use strict';
|
||
|
|
||
|
var path = require('path');
|
||
|
var utils = require('lazy-cache')(require);
|
||
|
var fn = require;
|
||
|
require = utils;
|
||
|
|
||
|
/**
|
||
|
* Lazily required module dependencies
|
||
|
*/
|
||
|
|
||
|
require('base-option', 'option');
|
||
|
require('base-plugins', 'plugin');
|
||
|
require('clone');
|
||
|
require('clone-stats');
|
||
|
require('define-property', 'define');
|
||
|
require('extend-shallow', 'extend');
|
||
|
require('isobject');
|
||
|
require = fn;
|
||
|
|
||
|
/**
|
||
|
* Return true if the given value is an object.
|
||
|
* @return {Boolean}
|
||
|
*/
|
||
|
|
||
|
utils.isObject = function(val) {
|
||
|
return utils.isobject(val) || typeof val === 'function';
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Return true if `str` ends with substring `sub`
|
||
|
*/
|
||
|
|
||
|
utils.endsWith = function(str, sub) {
|
||
|
return str.slice(-sub.length) === sub;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Return true if the given value is a buffer
|
||
|
*/
|
||
|
|
||
|
utils.isBuffer = function(val) {
|
||
|
if (val && val.constructor && typeof val.constructor.isBuffer === 'function') {
|
||
|
return val.constructor.isBuffer(val);
|
||
|
}
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Return true if the given value is a stream.
|
||
|
*/
|
||
|
|
||
|
utils.isStream = function(val) {
|
||
|
return utils.isObject(val)
|
||
|
&& (typeof val.pipe === 'function')
|
||
|
&& (typeof val.on === 'function');
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Resolve the name of the engine to use, or the file
|
||
|
* extension to use for identifying the engine.
|
||
|
*
|
||
|
* @param {Object} `item`
|
||
|
* @return {String}
|
||
|
*/
|
||
|
|
||
|
utils.resolveEngine = function(item) {
|
||
|
var engine = item.options.engine || item.locals.engine || item.data.engine;
|
||
|
if (!engine) {
|
||
|
engine = path.extname(item.path);
|
||
|
item.data.ext = engine;
|
||
|
}
|
||
|
return engine;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Sync the _content and _contents properties on a view to ensure
|
||
|
* both are set when setting either.
|
||
|
*
|
||
|
* @param {Object} `view` instance of a `View`
|
||
|
* @param {String|Buffer|Stream|null} `contents` contents to set on both properties
|
||
|
*/
|
||
|
|
||
|
utils.syncContents = function(item, contents) {
|
||
|
if (typeof item._contents === 'undefined') {
|
||
|
item.define('_contents', null);
|
||
|
item.define('_content', null);
|
||
|
}
|
||
|
if (contents === null) {
|
||
|
item._contents = null;
|
||
|
item._content = null;
|
||
|
}
|
||
|
if (typeof contents === 'string') {
|
||
|
item._contents = new Buffer(contents);
|
||
|
item._content = contents;
|
||
|
}
|
||
|
if (utils.isBuffer(contents)) {
|
||
|
item._contents = contents;
|
||
|
item._content = contents.toString();
|
||
|
}
|
||
|
if (utils.isStream(contents)) {
|
||
|
item._contents = contents;
|
||
|
item._content = contents;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
utils.inspectStream = function(stream) {
|
||
|
var name = stream.constructor.name;
|
||
|
if (!utils.endsWith(name, 'Stream')) {
|
||
|
name += 'Stream';
|
||
|
}
|
||
|
return '<' + name + '>';
|
||
|
};
|
||
|
|
||
|
utils.cloneBuffer = function(buffer) {
|
||
|
var res = new Buffer(buffer.length);
|
||
|
buffer.copy(res);
|
||
|
return res;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Expose `utils` modules
|
||
|
*/
|
||
|
|
||
|
module.exports = utils;
|