Campi

I campi sono una parte importante della generazione di codice perché definiscono valori modificabili dall'utente come stringhe, numeri e colori (tra gli altri).

L'inclusione dei valori dei campi nel codice generato implica il recupero del valore del campo. trasformandola in una stringa utilizzabile, quindi concatenando la stringa con resto del codice.

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;
}

Ottieni valori

È possibile accedere ai valori dei campi utilizzando getFieldValue. Vantaggi che viene restituito è diverso da un campo all'altro, quindi devi controllare la classe incorporata campo per informazioni sul campo specifico. Per Ad esempio, i campi di immissione testo restituiscono il testo esatto inserito dall'utente, ma il menu a discesa restituiscono una stringa indipendente dalla lingua associata all'elemento dell'utente selezionato.

Trasformare i valori

La maggior parte dei valori dei campi è pronta per essere concatenata immediatamente alla stringa di codice. Tuttavia, alcuni valori di campo richiedono un lavoro aggiuntivo per poter essere utilizzati.

Stringa

Le stringhe devono essere tra virgolette dal generatore di codice prima di poter essere concatenate.

// 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'));

Variabili

Il generatore di codice deve eseguire lo scrubbing dei nomi delle variabili prima di poter essere concatenate. Ciò è necessario per due motivi:

  1. Le variabili vengono inserite dall'utente nella lingua che preferisce. Ciò significa che potrebbe essere necessario convertire in caratteri ASCII. Ad esempio, "متغير" vorrei vengono convertiti in "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1".
  2. Le variabili potrebbero essere in conflitto con parole riservate. Ciò significa che potrebbero dover modificati in modo da non creare conflitti. Ad esempio, "for" verrebbe convertito in "for2".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Concatena codice

Dopo aver ottenuto il valore del campo e convertitolo in una stringa, puoi concatenalo nella posizione corretta con la stringa di codice.

const code = `some code ${value} some more code`;

Codice di ritorno

Tipi di blocchi diversi richiedono che la stringa di codice venga restituita in di Google, quindi controlla le singole pagine per ulteriori informazioni: