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 (entre autres).

L'inclusion de valeurs de champ dans le code généré implique d'obtenir la valeur du champ, en la transformant en chaîne utilisable, puis en concaténant la chaîne avec le 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 les valeurs

Les valeurs des champs sont accessibles à l'aide de getFieldValue. Avantages varie d'un champ à l'autre. Vous devez donc vérifier la fonctionnalité intégrée pour obtenir des informations sur un champ spécifique. Pour exemple, les champs de saisie de texte renvoient le texte exact saisi par l'utilisateur, mais les listes déroulantes Ils renvoient une chaîne neutre de langue associée à l'élément que l'utilisateur sélectionnée.

Transformer des valeurs

La plupart des valeurs des champs sont immédiatement prêtes à être concaténées dans votre chaîne de code. Cependant, certaines valeurs de champ 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 peuvent avoir besoin d’être convertis en caractères ASCII. Exemple : "متغير" voudrait sera convertie en "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1".
  2. Les variables peuvent entrer en conflit avec des mots réservés. Cela signifie qu'ils peuvent avoir besoin d'être afin d'éviter tout conflit. Exemple : "for" serait converti en "for2".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Concaténer du code

Une fois que vous avez obtenu la valeur de votre champ et l'avez convertie en chaîne, vous pouvez concaténez-la 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 exigent que la chaîne de code soit renvoyée dans différentes . Pour en savoir plus, consultez les pages consacrées à ce sujet: