/** * 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}]; }