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 conseguir o valor do campo, transformá-lo em uma string utilizável e, em seguida, concatenar a string com 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 é retornado é diferente de campo para campo. Por isso, consulte a documentação sobre campos integrados para ver informações sobre seu campo específico. Por
exemplo, os campos de entrada de texto retornam o texto exato que o usuário inseriu, mas os campos suspensos
retornam uma string neutra de idioma associada ao item
selecionado.
Transformar valores
A maioria dos valores de campo está pronta para ser concatenada à 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
Os nomes das variáveis precisam ser refinados pelo gerador de código antes de serem 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, "
متغير
" seria convertido para "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1
". - As variáveis podem entrar em conflito com palavras reservadas. Isso significa que eles podem precisar ser
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 extrair o valor do campo e convertê-lo em uma string, você pode concatená-lo no local correto com a 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 de diferentes maneiras. Portanto, confira as páginas individuais para mais informações: