Los campos son una parte importante de la generación de código, porque definen valores que el usuario puede editar, como cadenas, números y colores, entre otros.
Incluir valores de campo en el código generado implica obtener el valor del campo, transformarla en una cadena utilizable y, luego, concatenar la cadena con el 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;
}
Obtener valores
Se puede acceder a los valores de campo con getFieldValue
. ¿Qué se obtiene
son diferentes de un campo a otro, así que debes comprobar los elementos
campo para obtener información sobre tu campo específico. Para
ejemplo, los campos de entrada de texto devuelven el texto exacto que ingresó el usuario, pero
los campos muestran una cadena de idioma neutro asociada con el elemento que el usuario
seleccionado.
Transforma valores
La mayoría de los valores de campo están listos para concatenarse a la cadena de código de inmediato. Sin embargo, algunos valores de campo requieren trabajo adicional antes de ser utilizables.
Strings
El generador de código debe citar las cadenas 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ódigos debe depurar los nombres de las variables antes de que se puedan concatenados. Esto es necesario por dos motivos:
- El usuario ingresa las variables en el idioma que elija. Esto significa que
se deban convertir a caracteres ASCII. Por ejemplo, "
متغير
" haría se convertirán en "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
". - Las variables pueden entrar en conflicto con palabras reservadas. Esto significa que tal vez debas
modificados para que no entren en conflicto. Por ejemplo, "
for
" se convertirán en “for2
”
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
Concatena código
Una vez que hayas obtenido el valor de tu campo y lo hayas convertido en una cadena, puedes concatenala 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 cadena de código se muestre en diferentes Por eso, te recomendamos que consultes las páginas individuales para obtener más información: