Source: expect.js

/**
 * Roboliq: Automation for liquid-handling robots
 * @copyright 2017, ETH Zurich, Ellis Whitehead
 * @license GPL-3.0
 */

var _ = require('lodash');
var assert = require('assert');
var expect = require('./expectCore.js');
var misc = require('./misc.js');
var wellsParser = require('./parsers/wellsParser.js');

function objectsValue(context, key, objects, effects, prefix) {
	var value = misc.findObjectsValue(key, objects, effects, undefined, prefix);
	if (_.isUndefined(value)) {
		var id = (prefix) ? prefix+"."+key : key;
		//console.trace();
		expect.throw(_.defaults({objectName: id}, context), "missing value.");
	}
	return value;
}

function wells(context, value, data) {
	assert(value);
	assert(data);
	assert(data.objects);
	var destinations = expect.try(context, function () {
		//console.dir(wellsParser.parse);
		if (_.isString(value))
			return wellsParser.parse(value, data.objects);
		else
			return value;
	});
	return destinations;
}

module.exports = _.merge(expect, {
	destinationWells: wells,
	objectsValue: objectsValue,
	sourceWells: wells,
});