/**
* Roboliq: Automation for liquid-handling robots
* @copyright 2017, ETH Zurich, Ellis Whitehead
* @license GPL-3.0
*/
/**
* Handles instructions which are specifically for controlling evoware.
* @module
*/
import _ from 'lodash';
import commandHelper from 'roboliq-processor/dist/commandHelper.js';
import * as evowareHelper from './evowareHelper.js';
export function _execute(params, parsed, data) {
const line = evowareHelper.createExecuteLine(parsed.orig.path, parsed.orig.args, parsed.orig.wait);
return [{line}];
}
export function _facts(params, parsed, data) {
const line = evowareHelper.createFactsLine(parsed.orig.factsEquipment, parsed.orig.factsVariable, parsed.orig.factsValue);
if (params.labware) {
const values = commandHelper.lookupPaths({
plateModelName: [["@labware", "model"], "evowareName"],
plateOrigName: ["@labware", "location"],
plateOrigCarrierName: [["@labware", "location"], "evowareCarrier"],
plateOrigGrid: [["@labware", "location"], "evowareGrid"],
plateOrigSite: [["@labware", "location"], "evowareSite"]
}, params, data);
const tableEffects = [
[[values.plateOrigCarrierName, values.plateOrigGrid, values.plateOrigSite], {label: _.last(values.plateOrigName.split('.')), labwareModelName: values.plateModelName}],
];
return [{line, tableEffects}];
}
else {
return [{line}];
}
}
export function _raw(params, parsed, data) {
return _(parsed.value.commands).split(";").map(_.trim).compact().map(s => ({line: s+";"})).value();
}
export function _subroutine(params, parsed, data) {
const line = `Subroutine("${params.filename}",0);`;
return [{line}];
}
export function _userPrompt(params, parsed, data) {
const line = evowareHelper.createUserPromptLine(parsed.orig.text, parsed.orig.beep, parsed.orig.autoclose);
return [{line}];
}
export function _variable(params, parsed, data) {
const line = evowareHelper.createVariableLine(parsed.orig.name, parsed.orig.value);
return [{line}];
}