UNPKG

cloud-blocks

Version:

Cloud Blocks is a library for building scratch computing interfaces with Luxrobo MODI.

522 lines (498 loc) 11.7 kB
/** * @license * Visual Blocks Editor * * Copyright 2012 Google Inc. * https://developers.google.com/blockly/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; goog.provide('Blockly.Blocks.operators'); goog.require('Blockly.Blocks'); goog.require('Blockly.Colours'); goog.require('Blockly.constants'); goog.require('Blockly.ScratchBlocks.VerticalExtensions'); Blockly.Blocks['operator_add'] = { /** * Block for adding two numbers. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_ADD, args0: [ { type: 'input_value', name: 'NUM1' }, { type: 'input_value', name: 'NUM2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_subtract'] = { /** * Block for subtracting two numbers. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_SUBTRACT, args0: [ { type: 'input_value', name: 'NUM1' }, { type: 'input_value', name: 'NUM2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_multiply'] = { /** * Block for multiplying two numbers. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_MULTIPLY, args0: [ { type: 'input_value', name: 'NUM1' }, { type: 'input_value', name: 'NUM2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_divide'] = { /** * Block for dividing two numbers. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_DIVIDE, args0: [ { type: 'input_value', name: 'NUM1' }, { type: 'input_value', name: 'NUM2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_random'] = { /** * Block for picking a random number. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_RANDOM, args0: [ { type: 'input_value', name: 'FROM' }, { type: 'input_value', name: 'TO' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_lt'] = { /** * Block for less than comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_LT, args0: [ { type: 'input_value', name: 'OPERAND1' }, { type: 'input_value', name: 'OPERAND2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_lte'] = { /** * Block for less equal than comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_LTE, args0: [ { type: 'input_value', name: 'OPERAND1', check: 'Number' }, { type: 'input_value', name: 'OPERAND2', check: 'Number' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_gte'] = { /** * Block for greater than comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_GTE, args0: [ { type: 'input_value', name: 'OPERAND1', check: 'Number' }, { type: 'input_value', name: 'OPERAND2', check: 'Number' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_equals'] = { /** * Block for equals comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_EQUALS, args0: [ { type: 'input_value', name: 'OPERAND1' }, { type: 'input_value', name: 'OPERAND2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_gt'] = { /** * Block for greater than comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_GT, args0: [ { type: 'input_value', name: 'OPERAND1' }, { type: 'input_value', name: 'OPERAND2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_and'] = { /** * Block for "and" boolean comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_AND, args0: [ { type: 'input_value', name: 'OPERAND1', check: 'Boolean' }, { type: 'input_value', name: 'OPERAND2', check: 'Boolean' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_or'] = { /** * Block for "or" boolean comparator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_OR, args0: [ { type: 'input_value', name: 'OPERAND1', check: 'Boolean' }, { type: 'input_value', name: 'OPERAND2', check: 'Boolean' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_not'] = { /** * Block for "not" unary boolean operator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_NOT, args0: [ { type: 'input_value', name: 'OPERAND', check: 'Boolean' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_join'] = { /** * Block for string join operator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_JOIN, args0: [ { type: 'input_value', name: 'STRING1' }, { type: 'input_value', name: 'STRING2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_string'] }); } }; Blockly.Blocks['operator_letter_of'] = { /** * Block for "letter _ of _" operator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_LETTEROF, args0: [ { type: 'input_value', name: 'LETTER' }, { type: 'input_value', name: 'STRING' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_string'] }); } }; Blockly.Blocks['operator_length'] = { /** * Block for string length operator. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_LENGTH, args0: [ { type: 'input_value', name: 'STRING' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_string'] }); } }; Blockly.Blocks['operator_contains'] = { /** * Block for _ contains _ operator * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_CONTAINS, args0: [ { type: 'input_value', name: 'STRING1' }, { type: 'input_value', name: 'STRING2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_boolean'] }); } }; Blockly.Blocks['operator_mod'] = { /** * Block for mod two numbers. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_MOD, args0: [ { type: 'input_value', name: 'NUM1' }, { type: 'input_value', name: 'NUM2' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_round'] = { /** * Block for rounding a numbers. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_ROUND, args0: [ { type: 'input_value', name: 'NUM' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } }; Blockly.Blocks['operator_mathop'] = { /** * Block for "advanced" math ops on a number. * @this Blockly.Block */ init: function () { this.jsonInit({ message0: Blockly.Msg.OPERATORS_MATHOP, args0: [ { type: 'field_dropdown', name: 'OPERATOR', options: [ [Blockly.Msg.OPERATORS_MATHOP_ABS, 'abs'], [Blockly.Msg.OPERATORS_MATHOP_FLOOR, 'floor'], [Blockly.Msg.OPERATORS_MATHOP_CEILING, 'ceiling'], [Blockly.Msg.OPERATORS_MATHOP_SQRT, 'sqrt'], [Blockly.Msg.OPERATORS_MATHOP_SIN, 'sin'], [Blockly.Msg.OPERATORS_MATHOP_COS, 'cos'], [Blockly.Msg.OPERATORS_MATHOP_TAN, 'tan'], [Blockly.Msg.OPERATORS_MATHOP_ASIN, 'asin'], [Blockly.Msg.OPERATORS_MATHOP_ACOS, 'acos'], [Blockly.Msg.OPERATORS_MATHOP_ATAN, 'atan'], [Blockly.Msg.OPERATORS_MATHOP_LN, 'ln'], [Blockly.Msg.OPERATORS_MATHOP_LOG, 'log'], [Blockly.Msg.OPERATORS_MATHOP_EEXP, 'e ^'], [Blockly.Msg.OPERATORS_MATHOP_10EXP, '10 ^'] ] }, { type: 'input_value', name: 'NUM' } ], category: Blockly.Categories.operators, extensions: ['colours_operators', 'output_number'] }); } };