Campos

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:

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