フィールドはコード生成の重要な部分です。フィールドによって ユーザーが編集可能な値(文字列、数値、色など)。
生成されたコードにフィールド値を含めるには、フィールドの値を取得する必要があります。 それを使用可能な文字列に変換し、その文字列を 残りの部分で行います。
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 つあります。
- 変数は、ユーザーが選択した言語で入力します。つまり、
ASCII 文字への変換が必要な場合があります。例:
متغير
「_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
」に変換されます。 - 変数は予約済みの単語と競合する可能性があります。つまり、必要に応じて
競合しないように変更されています。例:
for
場合分けは、 「for2
」。
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
コードを連結する
フィールドの値を取得して文字列に変換したら、 コード文字列と正しい場所に連結してください。
const code = `some code ${value} some more code`;
戻りコード
ブロックの種類が異なれば、コード文字列を異なる形式で返す必要があります。 詳しくは、以下の各ページをご覧ください。