diff --git a/src/lib/monitor-adapter.js b/src/lib/monitor-adapter.js index f458f67c6bd75a50ef96d5a9f981e031162c32c5..25d80c39a824bd35483a3dc56a47c355e5aa44fc 100644 --- a/src/lib/monitor-adapter.js +++ b/src/lib/monitor-adapter.js @@ -3,8 +3,6 @@ * - Convert opcode to a label and a category * - Add missing XY position data if needed */ -const log = require('./log'); - const OpcodeLabels = require('../lib/opcode-labels.js'); const PADDING = 5; @@ -13,17 +11,10 @@ const MONITOR_HEIGHT = 23; const isUndefined = a => typeof a === 'undefined'; module.exports = function ({id, opcode, params, value, x, y}, monitorIndex) { - let opcodeData = OpcodeLabels[opcode]; - if (isUndefined(opcodeData)) { - log.error(`No data found for opcode: ${opcode}`); - opcodeData = {category: 'data', label: opcode}; - } + let {label, category, labelFn} = OpcodeLabels(opcode); - // Use labelFn with fields if provided for dynamic labelling (e.g. variables) - let {label, category, labelFn} = opcodeData; - if (!isUndefined(labelFn)) { - label = labelFn(params); - } + // Use labelFn if provided for dynamic labelling (e.g. variables) + if (!isUndefined(labelFn)) label = labelFn(params); // Simple layout if x or y are undefined // @todo scratch2 has a more complex layout behavior we may want to adopt diff --git a/src/lib/opcode-labels.js b/src/lib/opcode-labels.js index 9dbdcb59f358252739d5d867a49d167808cc3952..bebe14743630de643343e9b88318b88fdf312b07 100644 --- a/src/lib/opcode-labels.js +++ b/src/lib/opcode-labels.js @@ -1,4 +1,4 @@ -module.exports = { +const opcodeMap = { // Motion motion_direction: { category: 'motion', @@ -65,3 +65,11 @@ module.exports = { label: 'timer' } }; + +module.exports = function (opcode) { + if (opcode in opcodeMap) return opcodeMap[opcode]; + return { + category: 'data', + label: opcode + }; +};