Advertisement
Guest User

Untitled

a guest
Mar 25th, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   plus: function() {
  2.     this.addArg_();
  3.     Blockly.Procedures.mutateCallers(this);
  4.   },
  5.   minus: function(argId) {
  6.     if (!this.argIds_.length) {
  7.       return;
  8.     }
  9.     this.removeArg_(argId);
  10.     Blockly.Procedures.mutateCallers(this);
  11.   },
  12.   addArg_: function(opt_name, opt_varId) {
  13.     if (!this.arguments_.length) {
  14.       var withField = new Blockly.FieldLabel(
  15.           Blockly.Msg['PROCEDURES_BEFORE_PARAMS']);
  16.       this.getInput('TOP')
  17.           .appendField(withField, 'WITH');
  18.     }
  19.  
  20.     var name = opt_name || Blockly.Variables.generateUniqueNameFromOptions(
  21.         Blockly.Procedures.DEFAULT_ARG, this.arguments_);
  22.     var variable = Blockly.Variables.getOrCreateVariablePackage(
  23.         this.workspace, opt_varId, name, '');
  24.     var argId = Blockly.utils.genUid();
  25.  
  26.     this.addVarInput_(name, argId);
  27.     this.moveInputBefore(argId, 'STACK');
  28.  
  29.     this.arguments_.push(name);
  30.     this.varIds_.push(variable.getId());
  31.     this.argumentVarModels_.push(variable);
  32.     this.argIds_.push(argId);
  33.   },
  34.   removeArg_: function(argId) {
  35.     if (!this.getInput(argId)) {
  36.       return;
  37.     }
  38.     // TODO: My life would be so much happier if this returned a boolean instead
  39.     //  of throwing an error. I'm saying at least 15% more joy.
  40.     this.removeInput(argId);
  41.     if (this.arguments_.length == 1) {  // Becoming argumentless.
  42.       this.getInput('TOP').removeField('WITH');
  43.     }
  44.  
  45.     var index = this.argIds_.indexOf(argId);
  46.     this.arguments_.splice(index, 1);
  47.     this.varIds_.splice(index, 1);
  48.     this.argumentVarModels_.splice(index, 1);
  49.     this.argIds_.splice(index, 1);
  50.   },
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement