diff --git a/src/containers/ruby-tab/control-snippets.json b/src/containers/ruby-tab/control-snippets.json index 6995d3775ec..cddb6d54fc0 100644 --- a/src/containers/ruby-tab/control-snippets.json +++ b/src/containers/ruby-tab/control-snippets.json @@ -4,19 +4,19 @@ "description": "(1) 秒待つ" }, "times": { - "snippet": "${1:10}.times do\n${2}\nend\n", + "snippet": "${1:10}.times do\n\t${2}\nend", "description": "(10) 回繰り返す" }, "loop": { - "snippet": "loop do\n${1}\nend\n", + "snippet": "loop do\n\t${1}\nend", "description": "ずっと" }, "if": { - "snippet": "if ${1:false}\n${2}\nend\n", + "snippet": "if ${1:false}\n\t${2}\nend", "description": "もし < > なら" }, "if-else": { - "snippet": "if ${1:false}\n${2}\nelse\n${3}\nend\n", + "snippet": "if ${1:false}\n\t${2}\nelse\n\t${3}\nend", "description": "もし < > なら、でなければ" }, "wait-until": { @@ -24,7 +24,7 @@ "description": "< > まで待つ" }, "until": { - "snippet": "until ${1:false}\n${2}\nend\n", + "snippet": "until ${1:false}\n\t${2}\nend", "description": "< > まで繰り返す" }, "stop-all": { @@ -40,7 +40,7 @@ "description": "[スプライトの他のスクリプトを止める▼]" }, "when_start_as_a_clone": { - "snippet": "when_start_as_a_clone do\n${1}\nend\n", + "snippet": "when_start_as_a_clone do\n\t${1}\nend", "description": "クローンされたとき" }, "create_clone": { diff --git a/src/containers/ruby-tab/events-snippets.json b/src/containers/ruby-tab/events-snippets.json index 76100877a82..5dddd60402f 100644 --- a/src/containers/ruby-tab/events-snippets.json +++ b/src/containers/ruby-tab/events-snippets.json @@ -1,26 +1,26 @@ { "when_flag_clicked": { - "snippet": "when_flag_clicked do\n${1}\nend\n", + "snippet": "when_flag_clicked do\n\t${1}\nend", "description": "旗が押されたとき" }, "when_key_pressed": { - "snippet": "when_key_pressed(\"${1:space}\") do\n${2}\nend\n", + "snippet": "when_key_pressed(\"${1:space}\") do\n\t${2}\nend", "description": "[スペース▼] キーが押されたとき" }, "when_clicked": { - "snippet": "when_clicked do\n${1}\nend\n", + "snippet": "when_clicked do\n\t${1}\nend", "description": "このスプライトが押されたとき" }, "when_backdrop_switches": { - "snippet": "when_backdrop_switches(\"${1:背景1}\") do\n${2}\nend\n", + "snippet": "when_backdrop_switches(\"${1:背景1}\") do\n\t${2}\nend", "description": "背景が [背景1▼] になったとき" }, "when_greater_than": { - "snippet": "when_greater_than(\"${1:loudness}\", ${2:10}) do\n${3}\nend\n", + "snippet": "when_greater_than(\"${1:loudness}\", ${2:10}) do\n\t${3}\nend", "description": "[音量▼] > (10) のとき" }, "when_receive": { - "snippet": "when_receive(\"${1:メッセージ1}\") do\n${2}\nend\n", + "snippet": "when_receive(\"${1:メッセージ1}\") do\n\t${2}\nend", "description": "[メッセージ1▼] を受け取ったとき" }, "broadcast": { diff --git a/src/containers/ruby-tab/microbit-more-snippets.json b/src/containers/ruby-tab/microbit-more-snippets.json index d44bca483f7..aec9c3ed561 100644 --- a/src/containers/ruby-tab/microbit-more-snippets.json +++ b/src/containers/ruby-tab/microbit-more-snippets.json @@ -1,6 +1,126 @@ { + "microbit_more.when_microbit": { + "snippet": "microbit_more.when_microbit(\"${1:connected}\") do\n\t${2}\nend", + "description": "micro:bit と [つながった▼] とき" + }, "microbit_more.when_button_is": { - "snippet": "microbit_more.when_button_is(\"${1:A}\", \"${2:down}\") do\n${3}\nend\n", + "snippet": "microbit_more.when_button_is(\"${1:A}\", \"${2:down}\") do\n\t${3}\nend", "description": "ボタン [A▼] が [押された▼] とき" + }, + "microbit_more.button_pressed?": { + "snippet": "microbit_more.button_pressed?(\"${1:A}\")", + "description": "ボタン [A▼] が押されている" + }, + "microbit_more.when_pin_is": { + "snippet": "microbit_more.when_pin_is(\"${1:LOGO}\", \"${2:touched}\") do\n\t${3}\nend", + "description": "ピン [ロゴ▼] が [タッチされた▼] とき" + }, + "microbit_more.pin_is_touched?": { + "snippet": "microbit_more.pin_is_touched?(\"${1:LOGO}\")", + "description": "ピン [ログ▼] がタッチされている" + }, + "microbit_more.when": { + "snippet": "microbit_more.when(\"${1:shake}\") do\n\t${2}\nend", + "description": "[ゆさぶられた▼] とき" + }, + "microbit_more.display_pattern": { + "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)", + "description": "パターン (♡▼) を表示する" + }, + "microbit_more.display_text_delay": { + "snippet": "microbit_more.display_text_delay(\"${1:Hello!}\", ${2:120})", + "description": "文字 (Hello!) を (120) ミリ秒間隔で流す" + }, + "microbit_more.clear_display": { + "snippet": "microbit_more.clear_display", + "description": "画面を消す" + }, + "microbit_more.light_intensity": { + "snippet": "microbit_more.light_intensity", + "description": "明るさ" + }, + "microbit_more.temperature": { + "snippet": "microbit_more.temperature", + "description": "温度" + }, + "microbit_more.angle_with_north": { + "snippet": "microbit_more.angle_with_north", + "description": "北からの角度" + }, + "microbit_more.pitch": { + "snippet": "microbit_more.pitch", + "description": "ピッチ" + }, + "microbit_more.roll": { + "snippet": "microbit_more.roll", + "description": "ロール" + }, + "microbit_more.sound_level": { + "snippet": "microbit_more.sound_level", + "description": "音の大きさ" + }, + "microbit_more.magnetic_force": { + "snippet": "microbit_more.magnetic_force(\"${1:absolute}\")", + "description": "磁力 [大きさ▼]" + }, + "microbit_more.acceleration": { + "snippet": "microbit_more.acceleration(\"${1:x}\")", + "description": "加速度 [x▼]" + }, + "microbit_more.analog_value": { + "snippet": "microbit_more.analog_value(\"${1:P0}\")", + "description": "ピン [P0▼] のアナログレベル" + }, + "microbit_more.set_pin_to_input_pull": { + "snippet": "microbit_more.set_pin_to_input_pull(\"P0\", \"up\")", + "description": "ピン [P0▼] を [プルアップ▼] 入力にする" + }, + "microbit_more.is_pin_high?": { + "snippet": "microbit_more.is_pin_high?(\"${1:P0}\")", + "description": "ピン [P0▼] がハイである" + }, + "microbit_more.set_digital": { + "snippet": "microbit_more.set_digital(\"${1:P0}\", \"${2:Low}\")", + "description": "ピン [P0▼] をデジタル出力 [ロー▼] にする" + }, + "microbit_more.set_analog": { + "snippet": "microbit_more.set_analog(\"${1:P0}\", ${2:0})", + "description": "ピン [P0▼] をアナログ出力 [LEVEL] %にする" + }, + "microbit_more.set_servo": { + "snippet": "microbit_more.set_servo(\"${1:P0}\", ${2:0})", + "description": "ピン [P0▼] をサーボ (0) 度にする" + }, + "microbit_more.play_tone": { + "snippet": "microbit_more.play_tone(${1:440}, ${2:100})", + "description": "(440) Hzの音を (100) %の大きさで鳴らす" + }, + "microbit_more.stop_tone": { + "snippet": "microbit_more.stop_tone", + "description": "音を止める" + }, + "microbit_more.listen_event_on": { + "snippet": "microbit_more.listen_event_on(\"${1:none}\", \"${2:P0}\")", + "description": "ピン [P0▼] の [イベントを受けない▼]" + }, + "microbit_more.when_catch_at_pin": { + "snippet": "microbit_more.when_catch_at_pin(\"${1:low pulse}\", \"${2:P0}\") do\n\t${3}\nend", + "description": "ピン [P0▼] で [ローパルス▼] イベントが起きたとき" + }, + "microbit_more.value_of": { + "snippet": "microbit_more.value_of(\"${1:low pulse}\", \"${2:P0}\")", + "description": "ピン [P0▼] の [ローパルスの期間▼]" + }, + "microbit_more.when_data_received_from_microbit": { + "snippet": "microbit_more.when_data_received_from_microbit(\"${1:label-01}\") do\n\t${2}\nend", + "description": "micro:bit からラベル (label-01) のデータを受け取ったとき" + }, + "microbit_more.data": { + "snippet": "microbit_more.data[\"${1:label-01}\"]", + "description": "ラベル (label-01) のデータ" + }, + "microbit_more.send_data_to_microbit": { + "snippet": "microbit_more.send_data_to_microbit(\"${1:data}\", \"${2:label-01}\")", + "description": "micro:bit へデータ (data) にラベル (label-01) を付けて送る" } } diff --git a/src/containers/ruby-tab/microbit-snippets.json b/src/containers/ruby-tab/microbit-snippets.json index 1654c8d80b5..fe844d8d982 100644 --- a/src/containers/ruby-tab/microbit-snippets.json +++ b/src/containers/ruby-tab/microbit-snippets.json @@ -1,6 +1,6 @@ { "microbit.when_button_pressed": { - "snippet": "microbit.when_button_pressed(\"${1:A}\") do\n${2}\nend\n", + "snippet": "microbit.when_button_pressed(\"${1:A}\") do\n\t${2}\nend", "description": "ボタン (A▼) が押されたとき" }, "microbit.button_pressed?": { @@ -8,7 +8,7 @@ "description": "ボタン (A▼) が押された" }, "microbit.when": { - "snippet": "microbit.when(\"${1:moved}\") do\n${2}\nend\n", + "snippet": "microbit.when(\"${1:moved}\") do\n\t${2}\nend", "description": "(動いた▼) とき" }, "microbit.display_text": { @@ -16,11 +16,11 @@ "description": "(こんにちは!) を表示する" }, "microbit.display": { - "snippet": "microbit.display(\n \"${1:.1.1.}\",\n \"${2:1.1.1}\",\n \"${3:1...1}\",\n \"${4:.1.1.}\",\n \"${5:..1..}\"\n)\n", + "snippet": "microbit.display(\n \"${1:.1.1.}\",\n \"${2:1.1.1}\",\n \"${3:1...1}\",\n \"${4:.1.1.}\",\n \"${5:..1..}\"\n)", "description": "(♡▼) を表示する" }, "microbit.when_tilted": { - "snippet": "microbit.when_tilted(\"${1:any}\") do\n${2}\nend\n", + "snippet": "microbit.when_tilted(\"${1:any}\") do\n\t${2}\nend", "description": "(どれかの向き▼) に傾いたとき" }, "microbit.tilted?": { @@ -32,7 +32,7 @@ "description": "(前▼) 方向の傾き" }, "microbit.when_pin_connected": { - "snippet": "microbit.when_pin_connected(${1:0}) do\n${2}\nend\n", + "snippet": "microbit.when_pin_connected(${1:0}) do\n\t${2}\nend", "description": "ピン (0▼) がつながったとき" } } diff --git a/src/containers/ruby-tab/procedure-snippets.json b/src/containers/ruby-tab/procedure-snippets.json index edcff57685d..58d2449a2dc 100644 --- a/src/containers/ruby-tab/procedure-snippets.json +++ b/src/containers/ruby-tab/procedure-snippets.json @@ -1,6 +1,6 @@ { "def": { - "snippet": "def self.${1:ブロック名}(${2:number_or_text})\n${3}\nend\n", + "snippet": "def self.${1:ブロック名}(${2:number_or_text})\n\t${3}\nend", "description": "定義 ブロック名 (number_or_text)" } } diff --git a/src/containers/ruby-tab/video-sensing-snippets.json b/src/containers/ruby-tab/video-sensing-snippets.json index 5784388e480..6559ee5a898 100644 --- a/src/containers/ruby-tab/video-sensing-snippets.json +++ b/src/containers/ruby-tab/video-sensing-snippets.json @@ -1,6 +1,6 @@ { "video_sensing.when_video_motion>": { - "snippet": "video_sensing.when_video_motion_greater_than(${1:10}) do\n${2}\nend\n", + "snippet": "video_sensing.when_video_motion_greater_than(${1:10}) do\n\t${2}\nend", "description": "ビデオモーション > (10) のとき" }, "video_sensing.video": { diff --git a/src/lib/ruby-generator/microbit_more.js b/src/lib/ruby-generator/microbit_more.js index 767275e8579..b271a00529b 100644 --- a/src/lib/ruby-generator/microbit_more.js +++ b/src/lib/ruby-generator/microbit_more.js @@ -110,8 +110,9 @@ export default function (Generator) { return ['microbit_more.sound_level', Generator.ORDER_FUNCTION_CALL]; }; - Generator.microbitMore_getMagneticForce = function () { - return ['microbit_more.magnetic_force', Generator.ORDER_FUNCTION_CALL]; + Generator.microbitMore_getMagneticForce = function (block) { + const axis = Generator.quote_(Generator.getFieldValue(block, 'AXIS', 'absolute')); + return [`microbit_more.magnetic_force(${axis})`, Generator.ORDER_FUNCTION_CALL]; }; Generator.microbitMore_getAcceleration = function (block) { diff --git a/src/lib/ruby-to-blocks-converter/microbit_more.js b/src/lib/ruby-to-blocks-converter/microbit_more.js index 9e0980f5fee..1463e380400 100644 --- a/src/lib/ruby-to-blocks-converter/microbit_more.js +++ b/src/lib/ruby-to-blocks-converter/microbit_more.js @@ -311,10 +311,21 @@ const MicrobitMoreConverter = { return converter.changeRubyExpressionBlock(receiver, 'microbitMore_getSoundLevel', 'value'); }); - converter.registerCallMethod(MicrobitMore, 'magnetic_force', 0, params => { - const {receiver} = params; + converter.registerCallMethod(MicrobitMore, 'magnetic_force', 1, params => { + const {receiver, args} = params; - return converter.changeRubyExpressionBlock(receiver, 'microbitMore_getMagneticForce', 'value'); + if (converter.isString(args[0])) { + const index = AccelerationMenu.indexOf(args[0].toString().toLowerCase()); + if (index < 0) return null; + + args[0] = new Primitive('str', AccelerationMenu[index], args[0].node); + } else { + return null; + } + + const block = converter.changeRubyExpressionBlock(receiver, 'microbitMore_getMagneticForce', 'value'); + converter.addField(block, 'AXIS', args[0]); + return block; }); converter.registerCallMethod(MicrobitMore, 'acceleration', 1, params => { diff --git a/test/integration/ruby-tab/extension_microbit_more.test.js b/test/integration/ruby-tab/extension_microbit_more.test.js index 060b4cd0176..9c443e55ae6 100644 --- a/test/integration/ruby-tab/extension_microbit_more.test.js +++ b/test/integration/ruby-tab/extension_microbit_more.test.js @@ -91,7 +91,9 @@ describe('Ruby Tab: Microbit More v2 extension blocks', () => { microbit_more.sound_level - microbit_more.magnetic_force + microbit_more.magnetic_force("absolute") + + microbit_more.magnetic_force("x") microbit_more.acceleration("x")