インナーブロック

内部ブロックは、値とステートメントの入力に接続されるブロックです。個々のブロックコード生成ツールは、コードが正しい場所に追加されるように、内部ブロックの連結を処理する必要があります。

import {javascriptGenerator, Order} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Generate innner block code.
  const statement = generator.statementToCode(block, 'MY_STATEMENT_INPUT');
  const value = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

  // Concatenate the string.
  const code = `some code ${statement} ${value} some more code`;

  // Return the code.
  return code;
}

ステートメントの入力

ステートメント入力に接続されている内部ブロックのコードは、statementToCode を使用して生成できます。これは、ステートメント ブロックのブロックコード ジェネレータを呼び出し、コードのインデントを処理します。

const statement = generator.statementToCode(block, 'MY_STATEMENT_INPUT');

ステートメント入力に直接接続されている内部ブロックに対してのみ、statementToCode を呼び出す必要があります。

値の入力

値入力に接続されている内部ブロックのコードは、valueTocode を使用して生成できます。このメソッドは値ブロックのブロックコード コード ジェネレータを呼び出し、必要に応じて内部ブロックのコードの前後にかっこを追加します。

かっこを制御する方法について詳しくは、かっこに関するドキュメントをご覧ください。

const value = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

コードを連結する

内部ブロックのコード文字列を取得したら、それをコード文字列と正しい場所に連結できます。

const code = `some code ${statement} ${value} some more code`;

戻りコード

ブロックの種類に応じて、コード文字列を返す方法も異なります。詳しくは、それぞれのページをご覧ください。