diff --git a/core/interfaces/i_procedure_block.js b/core/interfaces/i_procedure_block.js new file mode 100644 index 000000000..17502c19a --- /dev/null +++ b/core/interfaces/i_procedure_block.js @@ -0,0 +1,43 @@ +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for a procedure block. + */ + +'use strict'; + +goog.provide('Blockly.Procedures.ProcedureBlock'); + +/** + * A procedure block interface. + * @interface + */ +Blockly.Procedures.ProcedureBlock = function() {}; + +/** + * Returns the name of the procedure the procedure block calls. + * @return {string} + */ +Blockly.Procedures.ProcedureBlock.prototype.getProcedureCall; + +/** + * Renames the procedure from the old name to the new name. If the procedure + * block receives this and the old name matches the block's current name, it + * should update itself to have the new name instead. + * @param {string} oldName The old name of the procedure. + * @param {string} newName The new name of hte procedure. + */ +Blockly.Procedures.ProcedureBlock.prototype.renameProcedure; + +/** + * Returns the signature of the procedure block's procedure definition. + * @return {!Array} Tuple containing three elements: + * - {string} the name of the defined procedure + * - {!Array} a list of all its arguments + * - {boolean} whether it has a return value or not + */ +Blockly.Procedures.ProcedureBlock.prototype.getProcedureDef; diff --git a/core/procedures.js b/core/procedures.js index 59c364719..03b0210b3 100644 --- a/core/procedures.js +++ b/core/procedures.js @@ -25,6 +25,7 @@ goog.require('Blockly.Events.BlockChange'); goog.require('Blockly.Field'); goog.require('Blockly.Msg'); goog.require('Blockly.Names'); +goog.require('Blockly.Procedures.ProcedureBlock'); goog.require('Blockly.utils.xml'); goog.require('Blockly.Workspace'); goog.require('Blockly.Xml'); @@ -47,16 +48,6 @@ Blockly.Procedures.NAME_TYPE = Blockly.PROCEDURE_CATEGORY_NAME; */ Blockly.Procedures.DEFAULT_ARG = 'x'; -/** - * Procedure block type. - * @typedef {{ - * getProcedureCall: function():string, - * renameProcedure: function(string,string), - * getProcedureDef: function():!Array - * }} - */ -Blockly.Procedures.ProcedureBlock; - /** * Find all user-created procedure definitions in a workspace. * @param {!Blockly.Workspace} root Root workspace.