Skip to content

Commit 967b214

Browse files
committed
feat: microbit more completion
1 parent f8f8621 commit 967b214

File tree

4 files changed

+141
-7
lines changed

4 files changed

+141
-7
lines changed
Lines changed: 121 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,126 @@
11
{
2+
"microbit_more.when_microbit": {
3+
"snippet": "microbit_more.when_microbit(\"${1:connected}\") do\n\t${2}\nend\n",
4+
"description": "micro:bit と [つながった▼] とき"
5+
},
26
"microbit_more.when_button_is": {
3-
"snippet": "microbit_more.when_button_is(\"${1:A}\", \"${2:down}\") do\n${3}\nend\n",
7+
"snippet": "microbit_more.when_button_is(\"${1:A}\", \"${2:down}\") do\n\t${3}\nend\n",
48
"description": "ボタン [A▼] が [押された▼] とき"
9+
},
10+
"microbit_more.button_pressed?": {
11+
"snippet": "microbit_more.button_pressed?(\"${1:A}\")",
12+
"description": "ボタン [A▼] が押されている"
13+
},
14+
"microbit_more.when_pin_is": {
15+
"snippet": "microbit_more.when_pin_is(\"${1:LOGO}\", \"${2:touched}\") do\n\t${3}\nend\n",
16+
"description": "ピン [ロゴ▼] が [タッチされた▼] とき"
17+
},
18+
"microbit_more.pin_is_touched?": {
19+
"snippet": "microbit_more.pin_is_touched?(\"${1:LOGO}\")",
20+
"description": "ピン [ログ▼] がタッチされている"
21+
},
22+
"microbit_more.when": {
23+
"snippet": "microbit_more.when(\"${1:shake}\") do\n\t${2}\nend\n",
24+
"description": "[ゆさぶられた▼] とき"
25+
},
26+
"microbit_more.display_pattern": {
27+
"snippet": "microbit_more.display_pattern(\n\t\"${1:.1.1.}\",\n\t\"${2:1.1.1}\",\n\t\"${3:1...1}\",\n\t\"${4:.1.1.}\",\n\t\"${5:..1..}\"\n)\n",
28+
"description": "パターン (♡▼) を表示する"
29+
},
30+
"microbit_more.display_text_delay": {
31+
"snippet": "microbit_more.display_text_delay(\"${1:Hello!}\", ${2:120})",
32+
"description": "文字 (Hello!) を (120) ミリ秒間隔で流す"
33+
},
34+
"microbit_more.clear_display": {
35+
"snippet": "microbit_more.clear_display",
36+
"description": "画面を消す"
37+
},
38+
"microbit_more.light_intensity": {
39+
"snippet": "microbit_more.light_intensity",
40+
"description": "明るさ"
41+
},
42+
"microbit_more.temperature": {
43+
"snippet": "microbit_more.temperature",
44+
"description": "温度"
45+
},
46+
"microbit_more.angle_with_north": {
47+
"snippet": "microbit_more.angle_with_north",
48+
"description": "北からの角度"
49+
},
50+
"microbit_more.pitch": {
51+
"snippet": "microbit_more.pitch",
52+
"description": "ピッチ"
53+
},
54+
"microbit_more.roll": {
55+
"snippet": "microbit_more.roll",
56+
"description": "ロール"
57+
},
58+
"microbit_more.sound_level": {
59+
"snippet": "microbit_more.sound_level",
60+
"description": "音の大きさ"
61+
},
62+
"microbit_more.magnetic_force": {
63+
"snippet": "microbit_more.magnetic_force(\"${1:absolute}\")",
64+
"description": "磁力 [大きさ▼]"
65+
},
66+
"microbit_more.acceleration": {
67+
"snippet": "microbit_more.acceleration(\"${1:x}\")",
68+
"description": "加速度 [x▼]"
69+
},
70+
"microbit_more.analog_value": {
71+
"snippet": "microbit_more.analog_value(\"${1:P0}\")",
72+
"description": "ピン [P0▼] のアナログレベル"
73+
},
74+
"microbit_more.set_pin_to_input_pull": {
75+
"snippet": "microbit_more.set_pin_to_input_pull(\"P0\", \"up\")",
76+
"description": "ピン [P0▼] を [プルアップ▼] 入力にする"
77+
},
78+
"microbit_more.is_pin_high?": {
79+
"snippet": "microbit_more.is_pin_high?(\"${1:P0}\")",
80+
"description": "ピン [P0▼] がハイである"
81+
},
82+
"microbit_more.set_digital": {
83+
"snippet": "microbit_more.set_digital(\"${1:P0}\", \"${2:Low}\")",
84+
"description": "ピン [P0▼] をデジタル出力 [ロー▼] にする"
85+
},
86+
"microbit_more.set_analog": {
87+
"snippet": "microbit_more.set_analog(\"${1:P0}\", ${2:0})",
88+
"description": "ピン [P0▼] をアナログ出力 [LEVEL] %にする"
89+
},
90+
"microbit_more.set_servo": {
91+
"snippet": "microbit_more.set_servo(\"${1:P0}\", ${2:0})",
92+
"description": "ピン [P0▼] をサーボ (0) 度にする"
93+
},
94+
"microbit_more.play_tone": {
95+
"snippet": "microbit_more.play_tone(${1:440}, ${2:100})",
96+
"description": "(440) Hzの音を (100) %の大きさで鳴らす"
97+
},
98+
"microbit_more.stop_tone": {
99+
"snippet": "microbit_more.stop_tone",
100+
"description": "音を止める"
101+
},
102+
"microbit_more.listen_event_on": {
103+
"snippet": "microbit_more.listen_event_on(\"${1:none}\", \"${2:P0}\")",
104+
"description": "ピン [P0▼] の [イベントを受けない▼]"
105+
},
106+
"microbit_more.when_catch_at_pin": {
107+
"snippet": "microbit_more.when_catch_at_pin(\"${1:low pulse}\", \"${2:P0}\") do\n\t${3}\nend\n",
108+
"description": "ピン [P0▼] で [ローパルス▼] イベントが起きたとき"
109+
},
110+
"microbit_more.value_of": {
111+
"snippet": "microbit_more.value_of(\"${1:low pulse}\", \"${2:P0}\")",
112+
"description": "ピン [P0▼] の [ローパルスの期間▼]"
113+
},
114+
"microbit_more.when_data_received_from_microbit": {
115+
"snippet": "microbit_more.when_data_received_from_microbit(\"${1:label-01}\") do\n\t${2}\nend\n",
116+
"description": "micro:bit からラベル (label-01) のデータを受け取ったとき"
117+
},
118+
"microbit_more.data": {
119+
"snippet": "microbit_more.data[\"${1:label-01}\"]",
120+
"description": "ラベル (label-01) のデータ"
121+
},
122+
"microbit_more.send_data_to_microbit": {
123+
"snippet": "microbit_more.send_data_to_microbit(\"${1:data}\", \"${2:label-01}\")",
124+
"description": "micro:bit へデータ (data) にラベル (label-01) を付けて送る"
5125
}
6126
}

src/lib/ruby-generator/microbit_more.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,9 @@ export default function (Generator) {
110110
return ['microbit_more.sound_level', Generator.ORDER_FUNCTION_CALL];
111111
};
112112

113-
Generator.microbitMore_getMagneticForce = function () {
114-
return ['microbit_more.magnetic_force', Generator.ORDER_FUNCTION_CALL];
113+
Generator.microbitMore_getMagneticForce = function (block) {
114+
const axis = Generator.quote_(Generator.getFieldValue(block, 'AXIS', 'absolute'));
115+
return [`microbit_more.magnetic_force(${axis})`, Generator.ORDER_FUNCTION_CALL];
115116
};
116117

117118
Generator.microbitMore_getAcceleration = function (block) {

src/lib/ruby-to-blocks-converter/microbit_more.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,21 @@ const MicrobitMoreConverter = {
311311
return converter.changeRubyExpressionBlock(receiver, 'microbitMore_getSoundLevel', 'value');
312312
});
313313

314-
converter.registerCallMethod(MicrobitMore, 'magnetic_force', 0, params => {
315-
const {receiver} = params;
314+
converter.registerCallMethod(MicrobitMore, 'magnetic_force', 1, params => {
315+
const {receiver, args} = params;
316316

317-
return converter.changeRubyExpressionBlock(receiver, 'microbitMore_getMagneticForce', 'value');
317+
if (converter.isString(args[0])) {
318+
const index = AccelerationMenu.indexOf(args[0].toString().toLowerCase());
319+
if (index < 0) return null;
320+
321+
args[0] = new Primitive('str', AccelerationMenu[index], args[0].node);
322+
} else {
323+
return null;
324+
}
325+
326+
const block = converter.changeRubyExpressionBlock(receiver, 'microbitMore_getMagneticForce', 'value');
327+
converter.addField(block, 'AXIS', args[0]);
328+
return block;
318329
});
319330

320331
converter.registerCallMethod(MicrobitMore, 'acceleration', 1, params => {

test/integration/ruby-tab/extension_microbit_more.test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ describe('Ruby Tab: Microbit More v2 extension blocks', () => {
9191
9292
microbit_more.sound_level
9393
94-
microbit_more.magnetic_force
94+
microbit_more.magnetic_force("absolute")
95+
96+
microbit_more.magnetic_force("x")
9597
9698
microbit_more.acceleration("x")
9799

0 commit comments

Comments
 (0)