UNPKG

automatic-assessments

Version:

Automatic assessment of Marty and Scratch 3.0 projects

59 lines (58 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WAIT_UNTIL_OPCODE = exports.STOP_OPCODE = exports.WAIT_OPCODE = void 0; const Analyzer_1 = require("../Analyzer"); exports.WAIT_OPCODE = 'control_wait'; exports.STOP_OPCODE = 'control_stop'; exports.WAIT_UNTIL_OPCODE = 'control_wait_until'; class Synchronisation extends Analyzer_1.default { constructor(targets) { super(); this.score = 0; this.targets = targets; } execute() { this.firstPointWait(); this.twoPointsStop(); this.threePointsWaitUntil(); return this.score; } firstPointWait() { // one point when using wait block (and it has at least a child) for (const target of this.targets) { for (const _blockKey of Object.keys(target.blocks._blocks)) { const _block = target.blocks._blocks[_blockKey]; if (_block.opcode === exports.WAIT_OPCODE && _block.next) { this.score = 1; break; } } } } twoPointsStop() { // twop points when using stop block (and it has a parent) for (const target of this.targets) { for (const _blockKey of Object.keys(target.blocks._blocks)) { const _block = target.blocks._blocks[_blockKey]; if (_block.opcode === exports.STOP_OPCODE && _block.parent) { this.score = 2; break; } } } } threePointsWaitUntil() { // three points when using wait until (with a child and an input) for (const target of this.targets) { for (const _blockKey of Object.keys(target.blocks._blocks)) { const _block = target.blocks._blocks[_blockKey]; const inputsLength = Object.keys(_block.inputs).length; if (_block.opcode === exports.WAIT_UNTIL_OPCODE && _block.next && inputsLength) { this.score = 3; break; } } } } } exports.default = Synchronisation;