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

  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, "متغير" seria convertido para "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1".
  2. 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: