Pola

Pola odgrywają ważną rolę podczas generowania kodu, ponieważ definiują m.in. wartości, które można edytować przez użytkownika, takie jak ciągi, liczby, kolory.

Uwzględnienie wartości pól w wygenerowanym kodzie wymaga pobrania wartości pola, przekształcenia go w użyteczny ciąg, a potem połączenia ciągu z resztą kodu.

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

Pobieranie wartości

Wartości pól są dostępne za pomocą narzędzia getFieldValue. Zwracane wartości różnią się w zależności od pola, więc informacje o konkretnym polu znajdziesz w dokumentacji wbudowanych pól. Na przykład pola do wprowadzania tekstu zwracają dokładnie tekst wpisany przez użytkownika, a rozwijane pola zwracają ciąg neutralny dla języka powiązany z elementem wybranym przez użytkownika.

Przekształć wartości

Większość wartości pól jest gotowa do natychmiastowego połączenia z ciągiem kodu. Niektóre wartości pól wymagają jednak wykonania dodatkowych czynności, zanim można ich używać.

Ciąg znaków

Zanim ciągi tekstowe będą mogły zostać połączone, generator kodu musi je zacytować.

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

Zmienne

Przed łączeniem nazw zmiennych generator kodu musi je wyczyścić. Jest to konieczne z dwóch powodów:

  1. Zmienne są wprowadzane przez użytkownika w wybranym przez siebie języku. Oznacza to, że może być konieczne przekonwertowanie ich na znaki ASCII. Na przykład „متغير” zostanie przekonwertowana na „_D9_85_D8_AA_D8_BA_D9_8A_D8_B1”.
  2. Zmienne mogą kolidować ze słowami zarezerwowanymi. Oznacza to, że konieczne może być zmodyfikowanie tak, aby nie kolidowały. Na przykład „for” zostanie przekonwertowana na „for2”.
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Połącz kod

Gdy pobierzesz wartość pola i przekonwertujesz ją na ciąg znaków, możesz połączyć ją w odpowiednim miejscu z ciągiem kodu.

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

Kod zwrotu

Różne rodzaje bloków wymagają zwracania ciągu kodu w różny sposób. Więcej informacji znajdziesz na poszczególnych stronach: