Внутренние блоки

Внутренние блоки — это блоки, прикрепленные к входным значениям и операторам. Отдельные генераторы блочного кода должны обрабатывать объединение своих внутренних блоков, чтобы код добавлялся в нужное место.

import {javascriptGenerator, Order} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Generate innner block code.
  const statement = generator.statementToCode(block, 'MY_STATEMENT_INPUT');
  const value = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

  // Concatenate the string.
  const code = `some code ${statement} ${value} some more code`;

  // Return the code.
  return code;
}

Входные данные оператора

Код внутренних блоков, прикрепленных к входным данным оператора, может быть сгенерирован с помощью statementToCode . Это вызывает генератор блочного кода блока операторов и обрабатывает код отступов.

const statement = generator.statementToCode(block, 'MY_STATEMENT_INPUT');

Вам нужно вызвать statementToCode только для внутреннего блока, напрямую подключенного к входу оператора.

Входные значения

Код внутренних блоков, прикрепленных к входным значениям, можно сгенерировать с помощью valueTocode . Это вызывает генератор кода блока значения и обрабатывает добавление круглых скобок вокруг кода внутренних блоков, когда это необходимо.

Дополнительную информацию о том, как управлять круглыми скобками, см. в документации по круглым скобкам .

const value = generator.valueToCode(block, 'MY_VALUE_INPUT', Order.ATOMIC);

Объединенный код

После того как вы получили строку кода внутреннего блока, вы можете объединить ее в нужном месте со строкой кода.

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

Код возврата

Разные типы блоков требуют, чтобы строка кода возвращалась разными способами, поэтому посетите их отдельные страницы для получения дополнительной информации: