フィールド

フィールドはコード生成の重要な部分です。フィールドによって ユーザーが編集可能な値(文字列、数値、色など)。

生成されたコードにフィールド値を含めるには、フィールドの値を取得する必要があります。 それを使用可能な文字列に変換し、その文字列を 残りの部分で行います。

import {javascriptGenerator} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Get the field value.
  const fieldValue = block.getFieldValue('MY_FIELD');

  // Concatenate the code.
  const code = `some code ${fieldValue} some more code`;

  // Return the code.
  return code;
}

値を取得する

フィールド値にアクセスするには、getFieldValue を使用します。得られるもの フィールドによって返される値が異なるため、組み込みの フィールドのドキュメントをご覧ください。対象 たとえば、テキスト入力フィールドでは、ユーザーが入力したテキストとまったく同じテキストが返されますが、 フィールドは、ユーザーが入力した商品アイテムに関連付けられた、言語に依存しない文字列を返します。 選択済みです。

値を変換する

ほとんどのフィールド値は、すぐにコード文字列に連結できます。 ただし、一部のフィールド値は、使用する前に追加の作業が必要です。

文字列

文字列を連結するには、コード生成ツールで引用符で囲む必要があります。

// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));

// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));

変数

変数名は、事前にコード生成ツールでスクラブしておく必要がある あります。この処理が必要な理由は 2 つあります。

  1. 変数は、ユーザーが選択した言語で入力します。つまり、 ASCII 文字への変換が必要な場合があります。例: متغير_D9_85_D8_AA_D8_BA_D9_8A_D8_B1」に変換されます。
  2. 変数は予約済みの単語と競合する可能性があります。つまり、必要に応じて 競合しないように変更されています。例: for場合分けは、 「for2」。
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

コードを連結する

フィールドの値を取得して文字列に変換したら、 コード文字列と正しい場所に連結してください。

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

戻りコード

ブロックの種類が異なれば、コード文字列を異なる形式で返す必要があります。 詳しくは、以下の各ページをご覧ください。