Os campos são uma parte importante da geração de código, porque definem valores editáveis pelo usuário, como strings, números e cores (entre outros).
Incluir valores de campo no código gerado envolve obter o valor do campo, transformá-la em uma string utilizável e, em seguida, concatenar a string com o o restante do 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;
}
Extrair valores
Os valores de campo podem ser acessados usando getFieldValue
. O que fica
retornado é diferente de campo para campo, portanto, verifique a configuração
campo para obter informações sobre seu campo específico. Para
exemplo, os campos de entrada de texto retornam o texto exato que o usuário digitou, mas o menu
retornam uma string de linguagem neutra associada ao item que o usuário
selecionados.
Transformar valores
A maioria dos valores de campo está pronta para ser concatenada na sua string de código imediatamente. No entanto, alguns valores de campo exigem trabalho extra antes de serem utilizáveis.
Strings
As strings precisam ser citadas pelo gerador de código antes de serem concatenadas.
// 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'));
Variáveis
Nomes de variáveis precisam ser depurados pelo gerador de código antes de poderem ser concatenados. Isso é necessário por dois motivos:
- As variáveis são inseridas pelo usuário no idioma escolhido. Isso significa que eles
podem precisar ser convertidos em caracteres ASCII. Por exemplo, "
متغير
" serão convertidos em "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
". - As variáveis podem entrar em conflito com palavras reservadas. Isso significa que elas podem precisar
modificados para que não entrem em conflito. Por exemplo, "
for
" seria convertido em "for2
".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));
Concatenar código
Depois de converter o valor do campo em uma string, é possível concatená-la no local correto com sua string de código.
const code = `some code ${value} some more code`;
Código de retorno
Diferentes tipos de blocos exigem que a string de código seja retornada em diferentes maneiras, portanto, verifique suas páginas individuais para mais informações: