Skip to content

Program-AR/proceds-blockly

Repository files navigation

proceds-blockly

This library installs new custom procedures for blockly, with custom modifications:

  • The parameters now can be easily added and removed with buttons, replacing the mutator popup.
  • The arguments (variables_get) are associated with the procedure. All this blocks now have a $parent field with the id of the procedure where they belong. For this to work, you must save this $parent in the mutation of variables_get.
  • The 'help' option was removed from the context menu.
  • The block procedures_defnoreturn has been splitted in procedures_defnoreturn and procedures_defnoreturnnoparams.
  • The block procedures_defreturn has been splitted in procedures_defreturn, procedures_defreturnsimplewithparams and procedures_defreturnsimple.
  • The blocks can be added on every category you want. If you want to create a category for the calls, use the custom names PROCEDURE_CALLS and FUNCTION_CALLS.
  • Procedure descriptions are disabled by default.
  • Support for a Blockly.CUSTOM_COLORS object.

Usage

If you desire to use a different language than Spanish, you can define your own translations for the needed blocks using Blockly.Msg, for example:

Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = 'your translation';

Then proceed to call ProcedsBlockly.init() to load these new translations. Otherwise, you can use the default language by calling ProcedsBlockly.setDefacultLocale():

  <script src="node_modules/proceds-blockly/proceds-blockly-original.js"></script>
  <script src="node_modules/proceds-blockly/proceds-blockly.js"></script>
  <script>
    ProcedsBlockly.setDefacultLocale() // if no translation was loaded previously
    ProcedsBlockly.init();
    // or ProcedsBlockly.init("Statement"); for custom statement type configurations
  </script>

Example

<xml id="toolbox" style="display: none">
  <category name="Procedures">
    <block type="procedures_defnoreturn"></block>
    <block type="procedures_defnoreturnnoparams"></block>
  </category>
  <category name="Functions">
    <block type="procedures_defreturn"></block>
    <block type="procedures_defreturnsimplewithparams"></block>
    <block type="procedures_defreturnsimple"></block>
  </category>
  <category name="Commands">
    <category name="Procedure invocations" custom="PROCEDURE_CALLS">
    </category>
  </category>
  <category name="Expressions">
    <category name="Function invocations" custom="FUNCTION_CALLS">
    </category>
  </category>
  <category name="Other blocks">
    <block type="controls_if"></block>
    <block type="logic_compare"></block>
    <block type="controls_repeat_ext"></block>
    <block type="math_number"></block>
    <block type="math_arithmetic"></block>
    <block type="text"></block>
    <block type="text_print"></block>
  </category>
  </xml>

See the demo!