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