Felder

Felder sind ein wichtiger Bestandteil der Codegenerierung, da sie Werte wie Strings, Zahlen und Farben definieren, die vom Nutzer bearbeitet werden können.

Wenn Sie Feldwerte in generierten Code einbeziehen, müssen Sie den Feldwert abrufen, ihn in einen verwendbaren String umwandeln und anschließend mit dem Rest des Codes verketten.

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;
}

Werte abrufen

Auf Feldwerte kann über getFieldValue zugegriffen werden. Was zurückgegeben wird, unterscheidet sich von Feld zu Feld. Daher sollten Sie in der Dokumentation zu integrierten Feldern nach Informationen zu Ihrem spezifischen Feld suchen. Texteingabefelder geben beispielsweise genau den vom Nutzer eingegebenen Text zurück, während Drop-down-Felder einen sprachneutralen String zurückgeben, der mit dem vom Nutzer ausgewählten Element verknüpft ist.

Werte transformieren

Die meisten Feldwerte können sofort mit dem Codestring verkettet werden. Einige Feldwerte erfordern jedoch zusätzliche Arbeit, bevor sie verwendet werden können.

Strings

Strings müssen vom Codegenerator in Anführungszeichen gesetzt werden, bevor sie verkettet werden können.

// 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'));

Variablen

Variablennamen müssen vom Codegenerator bereinigt werden, bevor sie verkettet werden können. Dies ist aus zwei Gründen erforderlich:

  1. Variablen werden vom Nutzer in der Sprache seiner Wahl eingegeben. Dies bedeutet, dass sie möglicherweise in ASCII-Zeichen konvertiert werden müssen. Beispielsweise wird „متغير“ in „_D9_85_D8_AA_D8_BA_D9_8A_D8_B1“ konvertiert.
  2. Variablen können mit reservierten Wörtern in Konflikt stehen. Dies bedeutet, dass sie möglicherweise geändert werden müssen, damit sie nicht in Konflikt stehen. Beispielsweise wird „for“ in „for2“ konvertiert.
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Code verketten

Nachdem Sie den Feldwert in einen String konvertiert haben, können Sie ihn an der richtigen Stelle mit dem Codestring verketten.

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

Rückgabecode

Für unterschiedliche Arten von Blöcken muss der Codestring auf unterschiedliche Weise zurückgegeben werden. Weitere Informationen finden Sie auf den jeweiligen Seiten: