Champs

Les champs jouent un rôle important dans la génération de code, car ils définissent des valeurs modifiables par l'utilisateur, telles que des chaînes, des nombres et des couleurs.

L'inclusion de valeurs de champ dans le code généré implique d'obtenir la valeur du champ, de la transformer en une chaîne utilisable, puis de concaténer la chaîne avec le reste du code.

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

Obtenir des valeurs

Les valeurs des champs sont accessibles via getFieldValue. Ce qui est renvoyé diffère d'un champ à l'autre. Vous devez donc consulter la documentation sur les champs intégrés pour en savoir plus sur votre champ spécifique. Par exemple, les champs de saisie de texte renvoient le texte exact saisi par l'utilisateur, mais les champs de liste déroulante renvoient une chaîne indépendante de la langue associée à l'élément sélectionné par l'utilisateur.

Transformer les valeurs

La plupart des valeurs de champ sont prêtes à être immédiatement concaténées dans votre chaîne de code. Cependant, certaines valeurs de champs nécessitent un travail supplémentaire avant d'être utilisables.

Strings

Les chaînes doivent être entre guillemets par le générateur de code avant de pouvoir être concaténées.

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

Variables

Les noms de variables doivent être nettoyés par le générateur de code avant de pouvoir être concaténés. Cela est nécessaire pour deux raisons:

  1. Les variables sont saisies par l'utilisateur dans la langue de son choix. Cela signifie qu'ils devront peut-être être convertis en caractères ASCII. Par exemple, "متغير" est converti en _D9_85_D8_AA_D8_BA_D9_8A_D8_B1.
  2. Les variables peuvent entrer en conflit avec les mots réservés. Vous devrez donc peut-être les modifier pour éviter tout conflit. Par exemple, "for" est converti en "for2".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Concaténer le code

Une fois que vous avez obtenu la valeur de votre champ et que vous l'avez convertie en chaîne, vous pouvez la concaténer au bon endroit avec votre chaîne de code.

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

Code renvoyé

Les différents types de blocs nécessitent différentes manières de renvoyer la chaîne de code. Pour en savoir plus, consultez les pages correspondantes: