value ブロックは、出力接続を持つブロックです。テキストベースの言語の値(式)のように機能します。

Blockly のすべてのブロックと同様に、ブロックコード ジェネレータを定義することで、値ブロックをコード文字列に変換できます。

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

javascriptGenerator.forBlock['custom_block'] = function(block, generator) {
  // Collect argument strings.
  const fieldValue = block.getFieldValue('MY_FIELD');
  const innerCode = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

  // Return code.
  return ['my code string', Order.NONE];
}

引数の文字列を収集する

すべてのブロックコード ジェネレータでは、フィールドの値を収集し、内部ブロックのコードを収集する必要があります。

// Collect field values.
const fieldValue = block.getFieldValue('MY_FIELD');

// Collect inner block code strings.
const innerCode = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

内部ブロックのコードを複数回参照する場合は、ブロックに引数キャッシュを追加する必要があります。

戻りコード

値ブロックコード生成ツールの戻り値の型は、1 つ目の値がコード文字列で、2 つ目の値が優先される配列です。

return ['my code string', Order.NONE];

優先度は、ブロックコード文字列をかっこで囲むタイミングを制御します。かっこが追加されるタイミングを制御する方法について詳しくは、かっこに関するドキュメントをご覧ください。