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:
- 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
". - 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: