From 9d41f09e1b6db773e163fd0488cd402ac0fed21d Mon Sep 17 00:00:00 2001 From: Paul Kaplan <pkaplan@media.mit.edu> Date: Tue, 23 May 2017 09:55:13 -0400 Subject: [PATCH] Use a function instead of object lookup to simplify defaults --- src/lib/monitor-adapter.js | 15 +++------------ src/lib/opcode-labels.js | 10 +++++++++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/lib/monitor-adapter.js b/src/lib/monitor-adapter.js index f458f67c6..25d80c39a 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 9dbdcb59f..bebe14743 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 + }; +}; -- GitLab