This repository was archived by the owner on May 18, 2026. It is now read-only.
forked from scratchfoundation/scratch-gui
-
-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathmicrobit.js
More file actions
96 lines (80 loc) · 3.89 KB
/
Copy pathmicrobit.js
File metadata and controls
96 lines (80 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/**
* Define Ruby code generator for micro:bit Blocks
* @param {RubyGenerator} Generator The RubyGenerator
* @return {RubyGenerator} same as param.
*/
export default function (Generator) {
Generator.microbit_whenButtonPressed = function (block) {
block.isStatement = true;
const btn = Generator.valueToCode(block, 'BTN', Generator.ORDER_NONE) || null;
return `microbit_v1.when_button_pressed(${btn}) do\n`;
};
Generator.microbit_isButtonPressed = function (block) {
const btn = Generator.valueToCode(block, 'BTN', Generator.ORDER_NONE) || null;
return `microbit_v1.button_pressed?(${btn})\n`;
};
Generator.microbit_whenGesture = function (block) {
block.isStatement = true;
const gesture = Generator.valueToCode(block, 'GESTURE', Generator.ORDER_NONE) || null;
return `microbit_v1.when(${gesture}) do\n`;
};
Generator.microbit_displaySymbol = function (block) {
let matrix = Generator.valueToCode(block, 'MATRIX', Generator.ORDER_NONE) || null;
if (matrix.indexOf('\n') >= 0) {
matrix = `\n${Generator.prefixLines(matrix, Generator.INDENT)}\n`;
}
return `microbit_v1.display(${matrix})\n`;
};
Generator.microbit_displayText = function (block) {
const text = Generator.valueToCode(block, 'TEXT', Generator.ORDER_NONE) || null;
return `microbit_v1.display_text(${text})\n`;
};
Generator.microbit_displayClear = function () {
return `microbit_v1.clear_display\n`;
};
Generator.microbit_whenTilted = function (block) {
block.isStatement = true;
const direction = Generator.valueToCode(block, 'DIRECTION', Generator.ORDER_NONE) || null;
return `microbit_v1.when_tilted(${direction}) do\n`;
};
Generator.microbit_isTilted = function (block) {
const direction = Generator.valueToCode(block, 'DIRECTION', Generator.ORDER_NONE) || null;
return [`microbit_v1.tilted?(${direction})`, Generator.ORDER_ATOMIC];
};
Generator.microbit_getTiltAngle = function (block) {
const direction = Generator.valueToCode(block, 'DIRECTION', Generator.ORDER_NONE) || null;
return [`microbit_v1.tilt_angle(${direction})`, Generator.ORDER_ATOMIC];
};
Generator.microbit_whenPinConnected = function (block) {
block.isStatement = true;
const pin = Generator.valueToCode(block, 'PIN', Generator.ORDER_NONE) || null;
return `microbit_v1.when_pin_connected(${pin}) do\n`;
};
Generator.microbit_menu_buttons = function (block) {
const buttons = Generator.quote_(Generator.getFieldValue(block, 'buttons') || 'A');
return [buttons, Generator.ORDER_ATOMIC];
};
Generator.microbit_menu_gestures = function (block) {
const gestures = Generator.quote_(Generator.getFieldValue(block, 'gestures') || 'moved');
return [gestures, Generator.ORDER_ATOMIC];
};
Generator.microbit_menu_tiltDirectionAny = function (block) {
const tiltDirectionAny = Generator.quote_(Generator.getFieldValue(block, 'tiltDirectionAny') || 'any');
return [tiltDirectionAny, Generator.ORDER_ATOMIC];
};
Generator.microbit_menu_tiltDirection = function (block) {
const tiltDirection = Generator.quote_(Generator.getFieldValue(block, 'tiltDirection') || 'front');
return [tiltDirection, Generator.ORDER_ATOMIC];
};
Generator.microbit_menu_touchPins = function (block) {
const touchPins = Generator.getFieldValue(block, 'touchPins') || '0';
return [touchPins, Generator.ORDER_ATOMIC];
};
Generator.matrix = function (block) {
let matrix = Generator.getFieldValue(block, 'MATRIX') || '0000000000000000000000000';
matrix = matrix.replace(/0/g, '.');
matrix = matrix.match(/.{5}/g).map(s => Generator.quote_(s));
return [matrix.join(',\n'), Generator.ORDER_ATOMIC];
};
return Generator;
}