Campos

Los campos son una parte importante de la generación de código porque definen valores que el usuario puede editar, como strings, números y colores, entre otros.

Incluir valores de campos en el código generado implica obtener el valor del campo, transformarlo en una string utilizable y, luego, concatenar la string con el resto del código.

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

Obtén valores

Se puede acceder a los valores de campo a través de getFieldValue. Lo que se muestra es diferente de un campo a otro, por lo que debes verificar la documentación del campo integrado para obtener información sobre tu campo específico. Por ejemplo, los campos de entrada de texto muestran el texto exacto que ingresó el usuario, pero los campos desplegables muestran una string neutra de idioma asociada con el elemento que seleccionó el usuario.

Transforma valores

La mayoría de los valores de campo están listos para concatenarse a tu cadena de código de inmediato. Sin embargo, algunos valores de campo requieren trabajo adicional antes de que se puedan usar.

Cadenas

El generador de código debe citar las strings antes de que se puedan concatenar.

// 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

El generador de código debe limpiar los nombres de las variables antes de que se puedan concatenar. Esto es necesario por dos motivos:

  1. El usuario ingresa las variables en su idioma preferido. Esto significa que es posible que deban convertirse a caracteres ASCII. Por ejemplo, “متغير” se convertiría en “_D9_85_D8_AA_D8_BA_D9_8A_D8_B1”.
  2. Las variables pueden entrar en conflicto con las palabras reservadas. Esto significa que es posible que deban modificarse para que no entren en conflicto. Por ejemplo, "for" se convertiría en "for2".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Concatenar código

Una vez que obtengas el valor de tu campo y lo conviertas en una cadena, puedes concatenarlo en el lugar correcto con tu cadena de código.

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

Código de retorno

Los diferentes tipos de bloques requieren que la string de código se muestre de diferentes maneras, por lo que te recomendamos que revises sus páginas individuales para obtener más información: