blockly 9.3.0-beta.0 → 9.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +1674 -1520
- package/blockly_compressed.js +1313 -1152
- package/blockly_compressed.js.map +1 -1
- package/blocks_compressed.js +166 -173
- package/blocks_compressed.js.map +1 -1
- package/core/any_aliases.d.ts +5 -0
- package/core/block.d.ts +49 -17
- package/core/block_animations.d.ts +0 -4
- package/core/block_drag_surface.d.ts +135 -0
- package/core/block_dragger.d.ts +2 -7
- package/core/block_svg.d.ts +72 -9
- package/core/blockly.d.ts +29 -58
- package/core/blockly_options.d.ts +0 -2
- package/core/blocks.d.ts +0 -2
- package/core/browser_events.d.ts +0 -9
- package/core/bubble.d.ts +6 -4
- package/core/bubble_dragger.d.ts +2 -3
- package/core/bump_objects.d.ts +0 -3
- package/core/clipboard.d.ts +0 -3
- package/core/comment.d.ts +6 -10
- package/core/common.d.ts +0 -12
- package/core/component_manager.d.ts +0 -2
- package/core/connection.d.ts +19 -6
- package/core/connection_checker.d.ts +1 -3
- package/core/connection_db.d.ts +0 -2
- package/core/connection_type.d.ts +0 -2
- package/core/constants.d.ts +0 -4
- package/core/contextmenu.d.ts +0 -11
- package/core/contextmenu_items.d.ts +0 -27
- package/core/contextmenu_registry.d.ts +0 -2
- package/core/css.d.ts +0 -2
- package/core/delete_area.d.ts +0 -2
- package/core/dialog.d.ts +0 -6
- package/core/drag_target.d.ts +0 -2
- package/core/events/events_abstract.d.ts +0 -3
- package/core/events/events_block_base.d.ts +0 -2
- package/core/events/events_block_change.d.ts +0 -2
- package/core/events/events_block_create.d.ts +0 -2
- package/core/events/events_block_delete.d.ts +0 -2
- package/core/events/events_block_drag.d.ts +0 -2
- package/core/events/events_block_move.d.ts +0 -2
- package/core/events/events_bubble_open.d.ts +0 -2
- package/core/events/events_click.d.ts +0 -2
- package/core/events/events_comment_base.d.ts +0 -2
- package/core/events/events_comment_change.d.ts +0 -2
- package/core/events/events_comment_create.d.ts +0 -2
- package/core/events/events_comment_delete.d.ts +0 -2
- package/core/events/events_comment_move.d.ts +0 -2
- package/core/events/events_marker_move.d.ts +0 -2
- package/core/events/events_selected.d.ts +0 -2
- package/core/events/events_theme_change.d.ts +0 -2
- package/core/events/events_toolbox_item_select.d.ts +0 -2
- package/core/events/events_trashcan_open.d.ts +0 -2
- package/core/events/events_ui.d.ts +0 -1
- package/core/events/events_ui_base.d.ts +0 -2
- package/core/events/events_var_base.d.ts +0 -2
- package/core/events/events_var_create.d.ts +0 -2
- package/core/events/events_viewport.d.ts +0 -2
- package/core/events/utils.d.ts +0 -73
- package/core/events/workspace_events.d.ts +0 -2
- package/core/extensions.d.ts +0 -8
- package/core/field.d.ts +16 -15
- package/core/field_angle.d.ts +60 -50
- package/core/field_checkbox.d.ts +22 -10
- package/core/field_colour.d.ts +55 -42
- package/core/field_dropdown.d.ts +34 -18
- package/core/field_image.d.ts +9 -12
- package/core/field_input.d.ts +34 -11
- package/core/field_label.d.ts +7 -10
- package/core/field_label_serializable.d.ts +4 -6
- package/core/field_multilineinput.d.ts +34 -12
- package/core/field_number.d.ts +27 -19
- package/core/field_registry.d.ts +0 -3
- package/core/field_textinput.d.ts +28 -12
- package/core/field_variable.d.ts +28 -16
- package/core/flyout_base.d.ts +5 -6
- package/core/flyout_button.d.ts +2 -2
- package/core/flyout_horizontal.d.ts +0 -2
- package/core/flyout_metrics_manager.d.ts +0 -2
- package/core/flyout_vertical.d.ts +0 -2
- package/core/generator.d.ts +0 -1
- package/core/gesture.d.ts +4 -17
- package/core/grid.d.ts +0 -2
- package/core/icon.d.ts +0 -2
- package/core/inject.d.ts +0 -1
- package/core/input.d.ts +0 -3
- package/core/input_types.d.ts +0 -2
- package/core/insertion_marker_manager.d.ts +6 -6
- package/core/interfaces/i_ast_node_location.d.ts +0 -2
- package/core/interfaces/i_ast_node_location_svg.d.ts +0 -2
- package/core/interfaces/i_ast_node_location_with_block.d.ts +0 -2
- package/core/interfaces/i_autohideable.d.ts +0 -2
- package/core/interfaces/i_block_dragger.d.ts +1 -3
- package/core/interfaces/i_bounded_element.d.ts +0 -2
- package/core/interfaces/i_bubble.d.ts +6 -4
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +0 -2
- package/core/interfaces/i_component.d.ts +0 -2
- package/core/interfaces/i_connection_checker.d.ts +0 -2
- package/core/interfaces/i_contextmenu.d.ts +0 -1
- package/core/interfaces/i_copyable.d.ts +3 -2
- package/core/interfaces/i_deletable.d.ts +0 -2
- package/core/interfaces/i_delete_area.d.ts +0 -2
- package/core/interfaces/i_drag_target.d.ts +0 -2
- package/core/interfaces/i_draggable.d.ts +0 -2
- package/core/interfaces/i_flyout.d.ts +0 -2
- package/core/interfaces/i_keyboard_accessible.d.ts +0 -2
- package/core/interfaces/i_legacy_procedure_blocks.d.ts +34 -0
- package/core/interfaces/i_metrics_manager.d.ts +0 -2
- package/core/interfaces/i_movable.d.ts +0 -2
- package/core/interfaces/i_positionable.d.ts +0 -2
- package/core/interfaces/i_procedure_model.d.ts +0 -5
- package/core/interfaces/i_registrable.d.ts +0 -2
- package/core/interfaces/i_selectable.d.ts +0 -2
- package/core/interfaces/i_selectable_toolbox_item.d.ts +4 -2
- package/core/interfaces/i_serializer.d.ts +0 -2
- package/core/interfaces/i_styleable.d.ts +0 -2
- package/core/interfaces/i_toolbox.d.ts +0 -2
- package/core/interfaces/i_toolbox_item.d.ts +0 -2
- package/core/interfaces/i_variable_backed_parameter_model.d.ts +17 -0
- package/core/internal_constants.d.ts +0 -5
- package/core/keyboard_nav/ast_node.d.ts +0 -3
- package/core/keyboard_nav/basic_cursor.d.ts +0 -3
- package/core/keyboard_nav/cursor.d.ts +0 -3
- package/core/keyboard_nav/marker.d.ts +0 -2
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +0 -2
- package/core/marker_manager.d.ts +0 -2
- package/core/menu.d.ts +0 -2
- package/core/menuitem.d.ts +0 -2
- package/core/metrics_manager.d.ts +0 -2
- package/core/mutator.d.ts +0 -2
- package/core/names.d.ts +0 -3
- package/core/options.d.ts +0 -2
- package/core/positionable_helpers.d.ts +0 -7
- package/core/procedures.d.ts +2 -25
- package/core/registry.d.ts +0 -11
- package/core/render_management.d.ts +15 -0
- package/core/rendered_connection.d.ts +22 -9
- package/core/renderers/common/block_rendering.d.ts +0 -3
- package/core/renderers/common/constants.d.ts +6 -51
- package/core/renderers/common/debug.d.ts +0 -3
- package/core/renderers/common/debugger.d.ts +9 -23
- package/core/renderers/common/drawer.d.ts +0 -5
- package/core/renderers/common/i_path_object.d.ts +0 -17
- package/core/renderers/common/info.d.ts +2 -12
- package/core/renderers/common/marker_svg.d.ts +2 -4
- package/core/renderers/common/path_object.d.ts +0 -24
- package/core/renderers/common/renderer.d.ts +5 -20
- package/core/renderers/geras/constants.d.ts +0 -5
- package/core/renderers/geras/drawer.d.ts +2 -4
- package/core/renderers/geras/highlight_constants.d.ts +6 -17
- package/core/renderers/geras/highlighter.d.ts +0 -13
- package/core/renderers/geras/info.d.ts +2 -5
- package/core/renderers/geras/measurables/inline_input.d.ts +0 -3
- package/core/renderers/geras/measurables/statement_input.d.ts +0 -3
- package/core/renderers/geras/path_object.d.ts +0 -8
- package/core/renderers/geras/renderer.d.ts +5 -7
- package/core/renderers/measurables/base.d.ts +0 -3
- package/core/renderers/measurables/bottom_row.d.ts +0 -9
- package/core/renderers/measurables/connection.d.ts +0 -3
- package/core/renderers/measurables/external_value_input.d.ts +0 -3
- package/core/renderers/measurables/field.d.ts +0 -3
- package/core/renderers/measurables/hat.d.ts +0 -3
- package/core/renderers/measurables/icon.d.ts +2 -5
- package/core/renderers/measurables/in_row_spacer.d.ts +0 -3
- package/core/renderers/measurables/inline_input.d.ts +1 -4
- package/core/renderers/measurables/input_connection.d.ts +1 -4
- package/core/renderers/measurables/input_row.d.ts +0 -7
- package/core/renderers/measurables/jagged_edge.d.ts +2 -5
- package/core/renderers/measurables/next_connection.d.ts +0 -3
- package/core/renderers/measurables/output_connection.d.ts +0 -3
- package/core/renderers/measurables/previous_connection.d.ts +0 -3
- package/core/renderers/measurables/round_corner.d.ts +0 -3
- package/core/renderers/measurables/row.d.ts +0 -39
- package/core/renderers/measurables/spacer_row.d.ts +0 -3
- package/core/renderers/measurables/square_corner.d.ts +0 -3
- package/core/renderers/measurables/statement_input.d.ts +0 -3
- package/core/renderers/measurables/top_row.d.ts +0 -6
- package/core/renderers/measurables/types.d.ts +0 -31
- package/core/renderers/minimalist/constants.d.ts +2 -4
- package/core/renderers/minimalist/drawer.d.ts +0 -3
- package/core/renderers/minimalist/info.d.ts +0 -4
- package/core/renderers/minimalist/renderer.d.ts +0 -3
- package/core/renderers/thrasos/info.d.ts +0 -4
- package/core/renderers/thrasos/renderer.d.ts +3 -3
- package/core/renderers/zelos/constants.d.ts +3 -17
- package/core/renderers/zelos/drawer.d.ts +0 -3
- package/core/renderers/zelos/info.d.ts +0 -4
- package/core/renderers/zelos/marker_svg.d.ts +0 -2
- package/core/renderers/zelos/measurables/bottom_row.d.ts +0 -3
- package/core/renderers/zelos/measurables/inputs.d.ts +0 -3
- package/core/renderers/zelos/measurables/row_elements.d.ts +0 -3
- package/core/renderers/zelos/measurables/top_row.d.ts +0 -3
- package/core/renderers/zelos/path_object.d.ts +0 -9
- package/core/renderers/zelos/renderer.d.ts +3 -5
- package/core/scrollbar.d.ts +0 -2
- package/core/scrollbar_pair.d.ts +0 -2
- package/core/serialization/blocks.d.ts +3 -9
- package/core/serialization/exceptions.d.ts +0 -8
- package/core/serialization/priorities.d.ts +0 -4
- package/core/serialization/registry.d.ts +0 -2
- package/core/serialization/variables.d.ts +0 -4
- package/core/serialization/workspaces.d.ts +0 -2
- package/core/shortcut_items.d.ts +0 -17
- package/core/shortcut_registry.d.ts +0 -2
- package/core/sprites.d.ts +0 -2
- package/core/theme/classic.d.ts +0 -2
- package/core/theme/zelos.d.ts +0 -2
- package/core/theme.d.ts +0 -2
- package/core/theme_manager.d.ts +3 -6
- package/core/toolbox/category.d.ts +5 -7
- package/core/toolbox/collapsible_category.d.ts +0 -4
- package/core/toolbox/separator.d.ts +0 -2
- package/core/toolbox/toolbox.d.ts +2 -5
- package/core/toolbox/toolbox_item.d.ts +0 -2
- package/core/tooltip.d.ts +0 -29
- package/core/touch.d.ts +0 -13
- package/core/trashcan.d.ts +0 -2
- package/core/utils/aria.d.ts +0 -6
- package/core/utils/array.d.ts +0 -1
- package/core/utils/colour.d.ts +0 -12
- package/core/utils/coordinate.d.ts +0 -2
- package/core/utils/deprecation.d.ts +0 -1
- package/core/utils/dom.d.ts +0 -25
- package/core/utils/idgenerator.d.ts +0 -2
- package/core/utils/keycodes.d.ts +0 -2
- package/core/utils/math.d.ts +0 -3
- package/core/utils/metrics.d.ts +0 -1
- package/core/utils/object.d.ts +0 -4
- package/core/utils/parsing.d.ts +0 -4
- package/core/utils/rect.d.ts +0 -2
- package/core/utils/size.d.ts +0 -2
- package/core/utils/string.d.ts +0 -6
- package/core/utils/style.d.ts +0 -8
- package/core/utils/svg.d.ts +0 -2
- package/core/utils/svg_math.d.ts +0 -6
- package/core/utils/svg_paths.d.ts +0 -8
- package/core/utils/toolbox.d.ts +2 -35
- package/core/utils/useragent.d.ts +0 -8
- package/core/utils/xml.d.ts +9 -8
- package/core/utils.d.ts +0 -12
- package/core/variable_map.d.ts +1 -3
- package/core/variable_model.d.ts +0 -1
- package/core/variables.d.ts +13 -17
- package/core/variables_dynamic.d.ts +0 -4
- package/core/warning.d.ts +0 -2
- package/core/widgetdiv.d.ts +0 -10
- package/core/workspace.d.ts +3 -3
- package/core/workspace_audio.d.ts +0 -2
- package/core/workspace_comment.d.ts +1 -3
- package/core/workspace_comment_svg.d.ts +16 -5
- package/core/workspace_drag_surface_svg.d.ts +74 -0
- package/core/workspace_dragger.d.ts +3 -2
- package/core/workspace_svg.d.ts +48 -8
- package/core/xml.d.ts +1 -13
- package/core/zoom_controls.d.ts +4 -15
- package/dart_compressed.js +199 -199
- package/dart_compressed.js.map +1 -1
- package/javascript_compressed.js +168 -168
- package/javascript_compressed.js.map +1 -1
- package/lua_compressed.js +211 -211
- package/lua_compressed.js.map +1 -1
- package/msg/bn.js +2 -2
- package/msg/bs.js +7 -7
- package/msg/de.js +1 -1
- package/msg/fi.js +1 -1
- package/msg/fr.js +3 -3
- package/msg/ia.js +5 -5
- package/msg/kn.js +5 -5
- package/msg/ko.js +1 -1
- package/msg/lb.js +22 -22
- package/msg/sd.js +9 -9
- package/msg/skr-arab.js +2 -2
- package/msg/sl.js +18 -18
- package/msg/sw.js +1 -1
- package/msg/zh-hans.js +6 -6
- package/msg/zh-hant.js +2 -2
- package/package.json +6 -6
- package/php_compressed.js +185 -185
- package/php_compressed.js.map +1 -1
- package/python_compressed.js +138 -138
- package/python_compressed.js.map +1 -1
- package/core/utils/sentinel.d.ts +0 -18
package/php_compressed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["generators/php.js","generators/php/variables.js","generators/php/variables_dynamic.js","generators/php/text.js","generators/php/procedures.js","generators/php/math.js","generators/php/loops.js","generators/php/logic.js","generators/php/lists.js","generators/php/colour.js","generators/php/all.js"],"names":["stringUtils","CodeGenerator","inputTypes","Names","PHP","addReservedWords","ORDER_ATOMIC","ORDER_CLONE","ORDER_NEW","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_POWER","ORDER_INCREMENT","ORDER_DECREMENT","ORDER_BITWISE_NOT","ORDER_CAST","ORDER_SUPPRESS_ERROR","ORDER_INSTANCEOF","ORDER_LOGICAL_NOT","ORDER_UNARY_PLUS","ORDER_UNARY_NEGATION","ORDER_MULTIPLICATION","ORDER_DIVISION","ORDER_MODULUS","ORDER_ADDITION","ORDER_SUBTRACTION","ORDER_STRING_CONCAT","ORDER_BITWISE_SHIFT","ORDER_RELATIONAL","ORDER_EQUALITY","ORDER_REFERENCE","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_IF_NULL","ORDER_CONDITIONAL","ORDER_ASSIGNMENT","ORDER_LOGICAL_AND_WEAK","ORDER_LOGICAL_XOR","ORDER_LOGICAL_OR_WEAK","ORDER_NONE","ORDER_OVERRIDES","isInitialized","init","PHP.init","workspace","Object","getPrototypeOf","call","nameDB_","reset","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","finish","PHP.finish","code","definitions","values","definitions_","join","scrubNakedValue","PHP.scrubNakedValue","line","quote_","PHP.quote_","string","replace","multiline_quote_","PHP.multiline_quote_","split","map","lines","scrub_","PHP.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","wrap","COMMENT_WRAP","prefixLines","i","inputList","length","type","VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjusted","PHP.getAdjusted","atId","opt_delta","opt_negate","opt_order","delta","order","options","oneBasedIndex","defaultAtIndex","outerOrder","innerOrder","at","valueToCode","isNumber","Number","Math","floor","NameType","getName","getFieldValue","VARIABLE","argument0","varName","indexOf","itemCount_","element0","element1","elements","Array","value","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","text","operator","substring","errorIndex","indexAdjustment","where","Error","where1","where2","at1","at2","OPERATORS","getField","msg","sub","from","to","Variables","globals","usedVariables","allUsedVarModels","variable","name","getVars","push","devVarList","allDeveloperVariables","DEVELOPER_VARIABLE","globalStr","INDENT","funcName","PROCEDURE","xfix1","STATEMENT_PREFIX","injectId","STATEMENT_SUFFIX","loopTrap","INFINITE_LOOP_TRAP","branch","statementToCode","returnValue","xfix2","args","variables","tuple","hasReturnValue_","Infinity","argument1","arg","CONSTANTS","PROPERTIES","dropdownProperty","prefix","suffix","inputOrder","outputOrder","numberToCheck","divisor","func","list","argument2","repeats","String","addLoopTrap","loopVar","getDistinctName","endVar","match","until","variable0","increment","up","step","abs","startVar","incVar","xfix","loop","getSurroundLoop","suppressPrefixSuffix","n","branchCode","conditionCode","getInput","defaultArgument","value_if","value_then","value_else","element","repeatCount","mode","cachedList","listVar","xVar","listCode","direction","value_input","value_delim","red","green","blue","c1","c2","ratio","exports","moduleExports"],"mappings":"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","file":"php_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Helper functions for generating PHP for blocks.\n * @suppress {checkTypes|globalThis}\n */\n'use strict';\n\ngoog.module('Blockly.PHP');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {Block} = goog.requireType('Blockly.Block');\nconst {CodeGenerator} = goog.require('Blockly.CodeGenerator');\nconst {inputTypes} = goog.require('Blockly.inputTypes');\nconst {Names} = goog.require('Blockly.Names');\nconst {Workspace} = goog.requireType('Blockly.Workspace');\n\n\n/**\n * PHP code generator.\n * @type {!CodeGenerator}\n */\nconst PHP = new CodeGenerator('PHP');\n\n/**\n * List of illegal variable names.\n * This is not intended to be a security feature. Blockly is 100% client-side,\n * so bypassing this list is trivial. This is intended to prevent users from\n * accidentally clobbering a built-in object or function.\n */\nPHP.addReservedWords(\n // http://php.net/manual/en/reserved.keywords.php\n '__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,' +\n 'clone,const,continue,declare,default,die,do,echo,else,elseif,empty,' +\n 'enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,' +\n 'final,for,foreach,function,global,goto,if,implements,include,' +\n 'include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,' +\n 'print,private,protected,public,require,require_once,return,static,' +\n 'switch,throw,trait,try,unset,use,var,while,xor,' +\n // http://php.net/manual/en/reserved.constants.php\n 'PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,' +\n 'PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,' +\n 'PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,' +\n 'PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,' +\n 'PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,' +\n 'PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,' +\n 'PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,' +\n 'E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,' +\n 'E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,' +\n 'E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,' +\n '__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__');\n\n/**\n * Order of operation ENUMs.\n * http://php.net/manual/en/language.operators.precedence.php\n */\nPHP.ORDER_ATOMIC = 0; // 0 \"\" ...\nPHP.ORDER_CLONE = 1; // clone\nPHP.ORDER_NEW = 1; // new\nPHP.ORDER_MEMBER = 2.1; // []\nPHP.ORDER_FUNCTION_CALL = 2.2; // ()\nPHP.ORDER_POWER = 3; // **\nPHP.ORDER_INCREMENT = 4; // ++\nPHP.ORDER_DECREMENT = 4; // --\nPHP.ORDER_BITWISE_NOT = 4; // ~\nPHP.ORDER_CAST = 4; // (int) (float) (string) (array) ...\nPHP.ORDER_SUPPRESS_ERROR = 4; // @\nPHP.ORDER_INSTANCEOF = 5; // instanceof\nPHP.ORDER_LOGICAL_NOT = 6; // !\nPHP.ORDER_UNARY_PLUS = 7.1; // +\nPHP.ORDER_UNARY_NEGATION = 7.2; // -\nPHP.ORDER_MULTIPLICATION = 8.1; // *\nPHP.ORDER_DIVISION = 8.2; // /\nPHP.ORDER_MODULUS = 8.3; // %\nPHP.ORDER_ADDITION = 9.1; // +\nPHP.ORDER_SUBTRACTION = 9.2; // -\nPHP.ORDER_STRING_CONCAT = 9.3; // .\nPHP.ORDER_BITWISE_SHIFT = 10; // << >>\nPHP.ORDER_RELATIONAL = 11; // < <= > >=\nPHP.ORDER_EQUALITY = 12; // == != === !== <> <=>\nPHP.ORDER_REFERENCE = 13; // &\nPHP.ORDER_BITWISE_AND = 13; // &\nPHP.ORDER_BITWISE_XOR = 14; // ^\nPHP.ORDER_BITWISE_OR = 15; // |\nPHP.ORDER_LOGICAL_AND = 16; // &&\nPHP.ORDER_LOGICAL_OR = 17; // ||\nPHP.ORDER_IF_NULL = 18; // ??\nPHP.ORDER_CONDITIONAL = 19; // ?:\nPHP.ORDER_ASSIGNMENT = 20; // = += -= *= /= %= <<= >>= ...\nPHP.ORDER_LOGICAL_AND_WEAK = 21; // and\nPHP.ORDER_LOGICAL_XOR = 22; // xor\nPHP.ORDER_LOGICAL_OR_WEAK = 23; // or\nPHP.ORDER_NONE = 99; // (...)\n\n/**\n * List of outer-inner pairings that do NOT require parentheses.\n * @type {!Array<!Array<number>>}\n */\nPHP.ORDER_OVERRIDES = [\n // (foo()).bar() -> foo().bar()\n // (foo())[0] -> foo()[0]\n [PHP.ORDER_MEMBER, PHP.ORDER_FUNCTION_CALL],\n // (foo[0])[1] -> foo[0][1]\n // (foo.bar).baz -> foo.bar.baz\n [PHP.ORDER_MEMBER, PHP.ORDER_MEMBER],\n // !(!foo) -> !!foo\n [PHP.ORDER_LOGICAL_NOT, PHP.ORDER_LOGICAL_NOT],\n // a * (b * c) -> a * b * c\n [PHP.ORDER_MULTIPLICATION, PHP.ORDER_MULTIPLICATION],\n // a + (b + c) -> a + b + c\n [PHP.ORDER_ADDITION, PHP.ORDER_ADDITION],\n // a && (b && c) -> a && b && c\n [PHP.ORDER_LOGICAL_AND, PHP.ORDER_LOGICAL_AND],\n // a || (b || c) -> a || b || c\n [PHP.ORDER_LOGICAL_OR, PHP.ORDER_LOGICAL_OR]\n];\n\n/**\n * Whether the init method has been called.\n * @type {?boolean}\n */\nPHP.isInitialized = false;\n\n/**\n * Initialise the database of variable names.\n * @param {!Workspace} workspace Workspace to generate code from.\n */\nPHP.init = function(workspace) {\n // Call Blockly.CodeGenerator's init.\n Object.getPrototypeOf(this).init.call(this);\n\n if (!this.nameDB_) {\n this.nameDB_ = new Names(this.RESERVED_WORDS_, '$');\n } else {\n this.nameDB_.reset();\n }\n\n this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\n\n this.isInitialized = true;\n};\n\n/**\n * Prepend the generated code with the variable definitions.\n * @param {string} code Generated code.\n * @return {string} Completed code.\n */\nPHP.finish = function(code) {\n // Convert the definitions dictionary into a list.\n const definitions = Object.values(this.definitions_);\n // Call Blockly.CodeGenerator's finish.\n code = Object.getPrototypeOf(this).finish.call(this, code);\n this.isInitialized = false;\n\n this.nameDB_.reset();\n return definitions.join('\\n\\n') + '\\n\\n\\n' + code;\n};\n\n/**\n * Naked values are top-level blocks with outputs that aren't plugged into\n * anything. A trailing semicolon is needed to make this legal.\n * @param {string} line Line of generated code.\n * @return {string} Legal line of code.\n */\nPHP.scrubNakedValue = function(line) {\n return line + ';\\n';\n};\n\n/**\n * Encode a string as a properly escaped PHP string, complete with\n * quotes.\n * @param {string} string Text to encode.\n * @return {string} PHP string.\n * @protected\n */\nPHP.quote_ = function(string) {\n string = string.replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\n/g, '\\\\\\n')\n .replace(/'/g, '\\\\\\'');\n return '\\'' + string + '\\'';\n};\n\n/**\n * Encode a string as a properly escaped multiline PHP string, complete with\n * quotes.\n * @param {string} string Text to encode.\n * @return {string} PHP string.\n * @protected\n */\nPHP.multiline_quote_ = function(string) {\n const lines = string.split(/\\n/g).map(this.quote_);\n // Join with the following, plus a newline:\n // . \"\\n\" .\n // Newline escaping only works in double-quoted strings.\n return lines.join(' . \\\"\\\\n\\\" .\\n');\n};\n\n/**\n * Common tasks for generating PHP from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n * @param {!Block} block The current block.\n * @param {string} code The PHP code created for this block.\n * @param {boolean=} opt_thisOnly True to generate code for only this statement.\n * @return {string} PHP code with comments and subsequent blocks added.\n * @protected\n */\nPHP.scrub_ = function(block, code, opt_thisOnly) {\n let commentCode = '';\n // Only collect comments for blocks that aren't inline.\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\n // Collect comment for this block.\n let comment = block.getCommentText();\n if (comment) {\n comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3);\n commentCode += this.prefixLines(comment, '// ') + '\\n';\n }\n // Collect comments for all value arguments.\n // Don't collect comments for nested statements.\n for (let i = 0; i < block.inputList.length; i++) {\n if (block.inputList[i].type === inputTypes.VALUE) {\n const childBlock = block.inputList[i].connection.targetBlock();\n if (childBlock) {\n comment = this.allNestedComments(childBlock);\n if (comment) {\n commentCode += this.prefixLines(comment, '// ');\n }\n }\n }\n }\n }\n const nextBlock = block.nextConnection && block.nextConnection.targetBlock();\n const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock);\n return commentCode + code + nextCode;\n};\n\n/**\n * Gets a property and adjusts the value while taking into account indexing.\n * @param {!Block} block The block.\n * @param {string} atId The property ID of the element to get.\n * @param {number=} opt_delta Value to add.\n * @param {boolean=} opt_negate Whether to negate the value.\n * @param {number=} opt_order The highest order acting on this value.\n * @return {string|number}\n */\nPHP.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) {\n let delta = opt_delta || 0;\n let order = opt_order || this.ORDER_NONE;\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n let defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n let outerOrder = order;\n let innerOrder;\n if (delta > 0) {\n outerOrder = this.ORDER_ADDITION;\n innerOrder = this.ORDER_ADDITION;\n } else if (delta < 0) {\n outerOrder = this.ORDER_SUBTRACTION;\n innerOrder = this.ORDER_SUBTRACTION;\n } else if (opt_negate) {\n outerOrder = this.ORDER_UNARY_NEGATION;\n innerOrder = this.ORDER_UNARY_NEGATION;\n }\n let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex;\n\n if (stringUtils.isNumber(at)) {\n // If the index is a naked number, adjust it right now.\n at = Number(at) + delta;\n if (opt_negate) {\n at = -at;\n }\n } else {\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = at + ' + ' + delta;\n } else if (delta < 0) {\n at = at + ' - ' + -delta;\n }\n if (opt_negate) {\n if (delta) {\n at = '-(' + at + ')';\n } else {\n at = '-' + at;\n }\n }\n innerOrder = Math.floor(innerOrder);\n order = Math.floor(order);\n if (innerOrder && order >= innerOrder) {\n at = '(' + at + ')';\n }\n }\n return at;\n};\n\nexports.phpGenerator = PHP;\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.variables');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['variables_get'] = function(block) {\n // Variable getter.\n const code =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['variables_set'] = function(block) {\n // Variable setter.\n const argument0 =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_ASSIGNMENT) || '0';\n const varName =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' = ' + argument0 + ';\\n';\n};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for dynamic variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.variablesDynamic');\n\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n/** @suppress {extraRequire} */\ngoog.require('Blockly.PHP.variables');\n\n\n// PHP is dynamically typed.\nPHP['variables_get_dynamic'] = PHP['variables_get'];\nPHP['variables_set_dynamic'] = PHP['variables_set'];\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for text blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.texts');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['text'] = function(block) {\n // Text value.\n const code = PHP.quote_(block.getFieldValue('TEXT'));\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['text_multiline'] = function(block) {\n // Text value.\n const code = PHP.multiline_quote_(block.getFieldValue('TEXT'));\n const order =\n code.indexOf('.') !== -1 ? PHP.ORDER_STRING_CONCAT : PHP.ORDER_ATOMIC;\n return [code, order];\n};\n\nPHP['text_join'] = function(block) {\n // Create a string made up of any number of elements of any type.\n if (block.itemCount_ === 0) {\n return [\"''\", PHP.ORDER_ATOMIC];\n } else if (block.itemCount_ === 1) {\n const element = PHP.valueToCode(block, 'ADD0', PHP.ORDER_NONE) || \"''\";\n const code = element;\n return [code, PHP.ORDER_NONE];\n } else if (block.itemCount_ === 2) {\n const element0 =\n PHP.valueToCode(block, 'ADD0', PHP.ORDER_STRING_CONCAT) || \"''\";\n const element1 =\n PHP.valueToCode(block, 'ADD1', PHP.ORDER_STRING_CONCAT) || \"''\";\n const code = element0 + ' . ' + element1;\n return [code, PHP.ORDER_STRING_CONCAT];\n } else {\n const elements = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n elements[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || \"''\";\n }\n const code = 'implode(\\'\\', array(' + elements.join(',') + '))';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n};\n\nPHP['text_append'] = function(block) {\n // Append to a variable in place.\n const varName =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const value = PHP.valueToCode(block, 'TEXT', PHP.ORDER_ASSIGNMENT) || \"''\";\n return varName + ' .= ' + value + ';\\n';\n};\n\nPHP['text_length'] = function(block) {\n // String or array length.\n const functionName = PHP.provideFunction_('length', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) {\n if (is_string($value)) {\n return strlen($value);\n }\n return count($value);\n}\n`);\n const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n return [functionName + '(' + text + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n return ['empty(' + text + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_indexOf'] = function(block) {\n // Search the text for a substring.\n const operator =\n block.getFieldValue('END') === 'FIRST' ? 'strpos' : 'strrpos';\n const substring = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || \"''\";\n const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n let errorIndex = ' -1';\n let indexAdjustment = '';\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n indexAdjustment = ' + 1';\n }\n const functionName = PHP.provideFunction_(\n block.getFieldValue('END') === 'FIRST' ? 'text_indexOf' :\n 'text_lastIndexOf',\n `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $search) {\n $pos = ${operator}($text, $search);\n return $pos === false ? ${errorIndex} : $pos${indexAdjustment};\n}\n`);\n const code = functionName + '(' + text + ', ' + substring + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_charAt'] = function(block) {\n // Get letter at index.\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const textOrder = (where === 'RANDOM') ? PHP.ORDER_NONE : PHP.ORDER_NONE;\n const text = PHP.valueToCode(block, 'VALUE', textOrder) || \"''\";\n switch (where) {\n case 'FIRST': {\n const code = 'substr(' + text + ', 0, 1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'LAST': {\n const code = 'substr(' + text + ', -1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'FROM_START': {\n const at = PHP.getAdjusted(block, 'AT');\n const code = 'substr(' + text + ', ' + at + ', 1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'FROM_END': {\n const at = PHP.getAdjusted(block, 'AT', 1, true);\n const code = 'substr(' + text + ', ' + at + ', 1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'RANDOM': {\n const functionName = PHP.provideFunction_('text_random_letter', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text) {\n return $text[rand(0, strlen($text) - 1)];\n}\n`);\n const code = functionName + '(' + text + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n }\n throw Error('Unhandled option (text_charAt).');\n};\n\nPHP['text_getSubstring'] = function(block) {\n // Get substring.\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const text = PHP.valueToCode(block, 'STRING', PHP.ORDER_NONE) || \"''\";\n if (where1 === 'FIRST' && where2 === 'LAST') {\n const code = text;\n return [code, PHP.ORDER_NONE];\n } else {\n const at1 = PHP.getAdjusted(block, 'AT1');\n const at2 = PHP.getAdjusted(block, 'AT2');\n const functionName = PHP.provideFunction_('text_get_substring', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = strlen($text) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = strlen($text) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = strlen($text) - $at1;\n } else {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n return substr($text, $at1, $length);\n}\n`);\n const code = functionName + '(' + text + ', \\'' + where1 + '\\', ' + at1 +\n ', \\'' + where2 + '\\', ' + at2 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n};\n\nPHP['text_changeCase'] = function(block) {\n // Change capitalization.\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n let code;\n if (block.getFieldValue('CASE') === 'UPPERCASE') {\n code = 'strtoupper(' + text + ')';\n } else if (block.getFieldValue('CASE') === 'LOWERCASE') {\n code = 'strtolower(' + text + ')';\n } else if (block.getFieldValue('CASE') === 'TITLECASE') {\n code = 'ucwords(strtolower(' + text + '))';\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_trim'] = function(block) {\n // Trim spaces.\n const OPERATORS = {'LEFT': 'ltrim', 'RIGHT': 'rtrim', 'BOTH': 'trim'};\n const operator = OPERATORS[block.getFieldValue('MODE')];\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n return [operator + '(' + text + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_print'] = function(block) {\n // Print statement.\n const msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n return 'print(' + msg + ');\\n';\n};\n\nPHP['text_prompt_ext'] = function(block) {\n // Prompt function.\n let msg;\n if (block.getField('TEXT')) {\n // Internal message.\n msg = PHP.quote_(block.getFieldValue('TEXT'));\n } else {\n // External message.\n msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n }\n let code = 'readline(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'floatval(' + code + ')';\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_prompt'] = PHP['text_prompt_ext'];\n\nPHP['text_count'] = function(block) {\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n const sub = PHP.valueToCode(block, 'SUB', PHP.ORDER_NONE) || \"''\";\n const code = 'strlen(' + sub + ') === 0' +\n ' ? strlen(' + text + ') + 1' +\n ' : substr_count(' + text + ', ' + sub + ')';\n return [code, PHP.ORDER_CONDITIONAL];\n};\n\nPHP['text_replace'] = function(block) {\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n const from = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || \"''\";\n const to = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || \"''\";\n const code = 'str_replace(' + from + ', ' + to + ', ' + text + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_reverse'] = function(block) {\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n const code = 'strrev(' + text + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for procedure blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.procedures');\n\nconst Variables = goog.require('Blockly.Variables');\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['procedures_defreturn'] = function(block) {\n // Define a procedure with a return value.\n // First, add a 'global' statement for every variable that is not shadowed by\n // a local parameter.\n const globals = [];\n const workspace = block.workspace;\n const usedVariables = Variables.allUsedVarModels(workspace) || [];\n for (let i = 0, variable; variable = usedVariables[i]; i++) {\n const varName = variable.name;\n if (block.getVars().indexOf(varName) === -1) {\n globals.push(PHP.nameDB_.getName(varName, NameType.VARIABLE));\n }\n }\n // Add developer variables.\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n globals.push(\n PHP.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE));\n }\n const globalStr =\n globals.length ? PHP.INDENT + 'global ' + globals.join(', ') + ';\\n' : '';\n\n const funcName =\n PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE);\n let xfix1 = '';\n if (PHP.STATEMENT_PREFIX) {\n xfix1 += PHP.injectId(PHP.STATEMENT_PREFIX, block);\n }\n if (PHP.STATEMENT_SUFFIX) {\n xfix1 += PHP.injectId(PHP.STATEMENT_SUFFIX, block);\n }\n if (xfix1) {\n xfix1 = PHP.prefixLines(xfix1, PHP.INDENT);\n }\n let loopTrap = '';\n if (PHP.INFINITE_LOOP_TRAP) {\n loopTrap = PHP.prefixLines(\n PHP.injectId(PHP.INFINITE_LOOP_TRAP, block), PHP.INDENT);\n }\n const branch = PHP.statementToCode(block, 'STACK');\n let returnValue = PHP.valueToCode(block, 'RETURN', PHP.ORDER_NONE) || '';\n let xfix2 = '';\n if (branch && returnValue) {\n // After executing the function body, revisit this block for the return.\n xfix2 = xfix1;\n }\n if (returnValue) {\n returnValue = PHP.INDENT + 'return ' + returnValue + ';\\n';\n }\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = PHP.nameDB_.getName(variables[i], NameType.VARIABLE);\n }\n let code = 'function ' + funcName + '(' + args.join(', ') + ') {\\n' +\n globalStr + xfix1 + loopTrap + branch + xfix2 + returnValue + '}';\n code = PHP.scrub_(block, code);\n // Add % so as not to collide with helper functions in definitions list.\n PHP.definitions_['%' + funcName] = code;\n return null;\n};\n\n// Defining a procedure without a return value uses the same generator as\n// a procedure with a return value.\nPHP['procedures_defnoreturn'] = PHP['procedures_defreturn'];\n\nPHP['procedures_callreturn'] = function(block) {\n // Call a procedure with a return value.\n const funcName =\n PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE);\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = PHP.valueToCode(block, 'ARG' + i, PHP.ORDER_NONE) || 'null';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['procedures_callnoreturn'] = function(block) {\n // Call a procedure with no return value.\n // Generated code is for a function call as a statement is the same as a\n // function call as a value, with the addition of line ending.\n const tuple = PHP['procedures_callreturn'](block);\n return tuple[0] + ';\\n';\n};\n\nPHP['procedures_ifreturn'] = function(block) {\n // Conditionally return value from a procedure.\n const condition =\n PHP.valueToCode(block, 'CONDITION', PHP.ORDER_NONE) || 'false';\n let code = 'if (' + condition + ') {\\n';\n if (PHP.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the return is triggered.\n code +=\n PHP.prefixLines(PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT);\n }\n if (block.hasReturnValue_) {\n const value = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'null';\n code += PHP.INDENT + 'return ' + value + ';\\n';\n } else {\n code += PHP.INDENT + 'return;\\n';\n }\n code += '}\\n';\n return code;\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for math blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.math');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['math_number'] = function(block) {\n // Numeric value.\n let code = Number(block.getFieldValue('NUM'));\n const order = code >= 0 ? PHP.ORDER_ATOMIC : PHP.ORDER_UNARY_NEGATION;\n if (code === Infinity) {\n code = 'INF';\n } else if (code === -Infinity) {\n code = '-INF';\n }\n return [code, order];\n};\n\nPHP['math_arithmetic'] = function(block) {\n // Basic arithmetic operators, and power.\n const OPERATORS = {\n 'ADD': [' + ', PHP.ORDER_ADDITION],\n 'MINUS': [' - ', PHP.ORDER_SUBTRACTION],\n 'MULTIPLY': [' * ', PHP.ORDER_MULTIPLICATION],\n 'DIVIDE': [' / ', PHP.ORDER_DIVISION],\n 'POWER': [' ** ', PHP.ORDER_POWER],\n };\n const tuple = OPERATORS[block.getFieldValue('OP')];\n const operator = tuple[0];\n const order = tuple[1];\n const argument0 = PHP.valueToCode(block, 'A', order) || '0';\n const argument1 = PHP.valueToCode(block, 'B', order) || '0';\n const code = argument0 + operator + argument1;\n return [code, order];\n};\n\nPHP['math_single'] = function(block) {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\n let code;\n let arg;\n if (operator === 'NEG') {\n // Negation is a special case given its different operator precedence.\n arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_UNARY_NEGATION) || '0';\n if (arg[0] === '-') {\n // --3 is not legal in JS.\n arg = ' ' + arg;\n }\n code = '-' + arg;\n return [code, PHP.ORDER_UNARY_NEGATION];\n }\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_DIVISION) || '0';\n } else {\n arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0';\n }\n // First, handle cases which generate values that don't need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ABS':\n code = 'abs(' + arg + ')';\n break;\n case 'ROOT':\n code = 'sqrt(' + arg + ')';\n break;\n case 'LN':\n code = 'log(' + arg + ')';\n break;\n case 'EXP':\n code = 'exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'round(' + arg + ')';\n break;\n case 'ROUNDUP':\n code = 'ceil(' + arg + ')';\n break;\n case 'ROUNDDOWN':\n code = 'floor(' + arg + ')';\n break;\n case 'SIN':\n code = 'sin(' + arg + ' / 180 * pi())';\n break;\n case 'COS':\n code = 'cos(' + arg + ' / 180 * pi())';\n break;\n case 'TAN':\n code = 'tan(' + arg + ' / 180 * pi())';\n break;\n }\n if (code) {\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n // Second, handle cases which generate values that may need parentheses\n // wrapping the code.\n switch (operator) {\n case 'LOG10':\n code = 'log(' + arg + ') / log(10)';\n break;\n case 'ASIN':\n code = 'asin(' + arg + ') / pi() * 180';\n break;\n case 'ACOS':\n code = 'acos(' + arg + ') / pi() * 180';\n break;\n case 'ATAN':\n code = 'atan(' + arg + ') / pi() * 180';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, PHP.ORDER_DIVISION];\n};\n\nPHP['math_constant'] = function(block) {\n // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.\n const CONSTANTS = {\n 'PI': ['M_PI', PHP.ORDER_ATOMIC],\n 'E': ['M_E', PHP.ORDER_ATOMIC],\n 'GOLDEN_RATIO': ['(1 + sqrt(5)) / 2', PHP.ORDER_DIVISION],\n 'SQRT2': ['M_SQRT2', PHP.ORDER_ATOMIC],\n 'SQRT1_2': ['M_SQRT1_2', PHP.ORDER_ATOMIC],\n 'INFINITY': ['INF', PHP.ORDER_ATOMIC],\n };\n return CONSTANTS[block.getFieldValue('CONSTANT')];\n};\n\nPHP['math_number_property'] = function(block) {\n // Check if a number is even, odd, prime, whole, positive, or negative\n // or if it is divisible by certain number. Returns true or false.\n const PROPERTIES = {\n 'EVEN': ['', ' % 2 == 0', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY],\n 'ODD': ['', ' % 2 == 1', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY],\n 'WHOLE': ['is_int(', ')', PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL],\n 'POSITIVE': ['', ' > 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL],\n 'NEGATIVE': ['', ' < 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL],\n 'DIVISIBLE_BY': [null, null, PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY],\n 'PRIME': [null, null, PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL],\n };\n const dropdownProperty = block.getFieldValue('PROPERTY');\n const [prefix, suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty];\n const numberToCheck = PHP.valueToCode(block, 'NUMBER_TO_CHECK',\n inputOrder) || '0';\n let code;\n if (dropdownProperty === 'PRIME') {\n // Prime is a special case as it is not a one-liner test.\n const functionName = PHP.provideFunction_('math_isPrime', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if ($n == 2 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n`);\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor = PHP.valueToCode(block, 'DIVISOR',\n PHP.ORDER_MODULUS) || '0';\n if (divisor === '0') {\n return ['false', PHP.ORDER_ATOMIC];\n\n }\n code = numberToCheck + ' % ' + divisor + ' == 0';\n } else {\n code = prefix + numberToCheck + suffix;\n }\n return [code, outputOrder];\n};\n\nPHP['math_change'] = function(block) {\n // Add to a variable in place.\n const argument0 = PHP.valueToCode(block, 'DELTA', PHP.ORDER_ADDITION) || '0';\n const varName =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' += ' + argument0 + ';\\n';\n};\n\n// Rounding functions have a single operand.\nPHP['math_round'] = PHP['math_single'];\n// Trigonometry functions have a single operand.\nPHP['math_trig'] = PHP['math_single'];\n\nPHP['math_on_list'] = function(block) {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n let list;\n let code;\n switch (func) {\n case 'SUM':\n list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()';\n code = 'array_sum(' + list + ')';\n break;\n case 'MIN':\n list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()';\n code = 'min(' + list + ')';\n break;\n case 'MAX':\n list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()';\n code = 'max(' + list + ')';\n break;\n case 'AVERAGE': {\n const functionName = PHP.provideFunction_('math_mean', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($myList) {\n return array_sum($myList) / count($myList);\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n const functionName = PHP.provideFunction_('math_median', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MODE': {\n // As a list of numbers can contain more than one mode,\n // the returned result is provided as an array.\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].\n const functionName = PHP.provideFunction_('math_modes', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n const functionName = PHP.provideFunction_('math_standard_deviation', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM': {\n const functionName = PHP.provideFunction_('math_random_list', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_modulo'] = function(block) {\n // Remainder computation.\n const argument0 =\n PHP.valueToCode(block, 'DIVIDEND', PHP.ORDER_MODULUS) || '0';\n const argument1 = PHP.valueToCode(block, 'DIVISOR', PHP.ORDER_MODULUS) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, PHP.ORDER_MODULUS];\n};\n\nPHP['math_constrain'] = function(block) {\n // Constrain a number between two limits.\n const argument0 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || '0';\n const argument1 = PHP.valueToCode(block, 'LOW', PHP.ORDER_NONE) || '0';\n const argument2 =\n PHP.valueToCode(block, 'HIGH', PHP.ORDER_NONE) || 'Infinity';\n const code =\n 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_random_int'] = function(block) {\n // Random integer between [X] and [Y].\n const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || '0';\n const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || '0';\n const functionName = PHP.provideFunction_('math_random_int', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n`);\n const code = functionName + '(' + argument0 + ', ' + argument1 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_random_float'] = function(block) {\n // Random fraction between 0 and 1.\n return ['(float)rand()/(float)getrandmax()', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_atan2'] = function(block) {\n // Arctangent of point (X, Y) in degrees from -180 to 180.\n const argument0 = PHP.valueToCode(block, 'X', PHP.ORDER_NONE) || '0';\n const argument1 = PHP.valueToCode(block, 'Y', PHP.ORDER_NONE) || '0';\n return [\n 'atan2(' + argument1 + ', ' + argument0 + ') / pi() * 180',\n PHP.ORDER_DIVISION\n ];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for loop blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.loops');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['controls_repeat_ext'] = function(block) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(Number(block.getFieldValue('TIMES')));\n } else {\n // External number.\n repeats = PHP.valueToCode(block, 'TIMES', PHP.ORDER_ASSIGNMENT) || '0';\n }\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n let code = '';\n const loopVar = PHP.nameDB_.getDistinctName('count', NameType.VARIABLE);\n let endVar = repeats;\n if (!repeats.match(/^\\w+$/) && !stringUtils.isNumber(repeats)) {\n endVar = PHP.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE);\n code += endVar + ' = ' + repeats + ';\\n';\n }\n code += 'for (' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' +\n loopVar + '++) {\\n' + branch + '}\\n';\n return code;\n};\n\nPHP['controls_repeat'] = PHP['controls_repeat_ext'];\n\nPHP['controls_whileUntil'] = function(block) {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 =\n PHP.valueToCode(\n block, 'BOOL', until ? PHP.ORDER_LOGICAL_NOT : PHP.ORDER_NONE) ||\n 'false';\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n if (until) {\n argument0 = '!' + argument0;\n }\n return 'while (' + argument0 + ') {\\n' + branch + '}\\n';\n};\n\nPHP['controls_for'] = function(block) {\n // For loop.\n const variable0 =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_ASSIGNMENT) || '0';\n const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || '0';\n const increment = PHP.valueToCode(block, 'BY', PHP.ORDER_ASSIGNMENT) || '1';\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n let code;\n if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)) {\n // All arguments are simple numbers.\n const up = Number(argument0) <= Number(argument1);\n code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 +\n (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0;\n const step = Math.abs(Number(increment));\n if (step === 1) {\n code += up ? '++' : '--';\n } else {\n code += (up ? ' += ' : ' -= ') + step;\n }\n code += ') {\\n' + branch + '}\\n';\n } else {\n code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let startVar = argument0;\n if (!argument0.match(/^\\w+$/) && !stringUtils.isNumber(argument0)) {\n startVar =\n PHP.nameDB_.getDistinctName(variable0 + '_start', NameType.VARIABLE);\n code += startVar + ' = ' + argument0 + ';\\n';\n }\n let endVar = argument1;\n if (!argument1.match(/^\\w+$/) && !stringUtils.isNumber(argument1)) {\n endVar =\n PHP.nameDB_.getDistinctName(variable0 + '_end', NameType.VARIABLE);\n code += endVar + ' = ' + argument1 + ';\\n';\n }\n // Determine loop direction at start, in case one of the bounds\n // changes during loop execution.\n const incVar =\n PHP.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE);\n code += incVar + ' = ';\n if (stringUtils.isNumber(increment)) {\n code += Math.abs(increment) + ';\\n';\n } else {\n code += 'abs(' + increment + ');\\n';\n }\n code += 'if (' + startVar + ' > ' + endVar + ') {\\n';\n code += PHP.INDENT + incVar + ' = -' + incVar + ';\\n';\n code += '}\\n';\n code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar +\n ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 +\n ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\\n' +\n branch + '}\\n';\n }\n return code;\n};\n\nPHP['controls_forEach'] = function(block) {\n // For each loop.\n const variable0 =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_ASSIGNMENT) || '[]';\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n let code = '';\n code +=\n 'foreach (' + argument0 + ' as ' + variable0 + ') {\\n' + branch + '}\\n';\n return code;\n};\n\nPHP['controls_flow_statements'] = function(block) {\n // Flow statements: continue, break.\n let xfix = '';\n if (PHP.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n xfix += PHP.injectId(PHP.STATEMENT_PREFIX, block);\n }\n if (PHP.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the break/continue is triggered.\n xfix += PHP.injectId(PHP.STATEMENT_SUFFIX, block);\n }\n if (PHP.STATEMENT_PREFIX) {\n const loop = block.getSurroundLoop();\n if (loop && !loop.suppressPrefixSuffix) {\n // Inject loop's statement prefix here since the regular one at the end\n // of the loop will not get executed if 'continue' is triggered.\n // In the case of 'break', a prefix is needed due to the loop's suffix.\n xfix += PHP.injectId(PHP.STATEMENT_PREFIX, loop);\n }\n }\n switch (block.getFieldValue('FLOW')) {\n case 'BREAK':\n return xfix + 'break;\\n';\n case 'CONTINUE':\n return xfix + 'continue;\\n';\n }\n throw Error('Unknown flow statement.');\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for logic blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.logic');\n\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['controls_if'] = function(block) {\n // If/elseif/else condition.\n let n = 0;\n let code = '', branchCode, conditionCode;\n if (PHP.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n code += PHP.injectId(PHP.STATEMENT_PREFIX, block);\n }\n do {\n conditionCode = PHP.valueToCode(block, 'IF' + n, PHP.ORDER_NONE) || 'false';\n branchCode = PHP.statementToCode(block, 'DO' + n);\n if (PHP.STATEMENT_SUFFIX) {\n branchCode = PHP.prefixLines(\n PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) +\n branchCode;\n }\n code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\\n' +\n branchCode + '}';\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || PHP.STATEMENT_SUFFIX) {\n branchCode = PHP.statementToCode(block, 'ELSE');\n if (PHP.STATEMENT_SUFFIX) {\n branchCode = PHP.prefixLines(\n PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) +\n branchCode;\n }\n code += ' else {\\n' + branchCode + '}';\n }\n return code + '\\n';\n};\n\nPHP['controls_ifelse'] = PHP['controls_if'];\n\nPHP['logic_compare'] = function(block) {\n // Comparison operator.\n const OPERATORS =\n {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='};\n const operator = OPERATORS[block.getFieldValue('OP')];\n const order = (operator === '==' || operator === '!=') ? PHP.ORDER_EQUALITY :\n PHP.ORDER_RELATIONAL;\n const argument0 = PHP.valueToCode(block, 'A', order) || '0';\n const argument1 = PHP.valueToCode(block, 'B', order) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nPHP['logic_operation'] = function(block) {\n // Operations 'and', 'or'.\n const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||';\n const order =\n (operator === '&&') ? PHP.ORDER_LOGICAL_AND : PHP.ORDER_LOGICAL_OR;\n let argument0 = PHP.valueToCode(block, 'A', order);\n let argument1 = PHP.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'false';\n argument1 = 'false';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = (operator === '&&') ? 'true' : 'false';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nPHP['logic_negate'] = function(block) {\n // Negation.\n const order = PHP.ORDER_LOGICAL_NOT;\n const argument0 = PHP.valueToCode(block, 'BOOL', order) || 'true';\n const code = '!' + argument0;\n return [code, order];\n};\n\nPHP['logic_boolean'] = function(block) {\n // Boolean values true and false.\n const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false';\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['logic_null'] = function(block) {\n // Null data type.\n return ['null', PHP.ORDER_ATOMIC];\n};\n\nPHP['logic_ternary'] = function(block) {\n // Ternary operator.\n const value_if =\n PHP.valueToCode(block, 'IF', PHP.ORDER_CONDITIONAL) || 'false';\n const value_then =\n PHP.valueToCode(block, 'THEN', PHP.ORDER_CONDITIONAL) || 'null';\n const value_else =\n PHP.valueToCode(block, 'ELSE', PHP.ORDER_CONDITIONAL) || 'null';\n const code = value_if + ' ? ' + value_then + ' : ' + value_else;\n return [code, PHP.ORDER_CONDITIONAL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for list blocks.\n */\n\n/**\n * Lists in PHP are known to break when non-variables are passed into blocks\n * that require a list. PHP, unlike other languages, passes arrays as reference\n * value instead of value so we are unable to support it to the extent we can\n * for the other languages.\n * For example, a ternary operator with two arrays will return the array by\n * value and that cannot be passed into any of the built-in array functions for\n * PHP (because only variables can be passed by reference).\n * ex: end(true ? list1 : list2)\n */\n'use strict';\n\ngoog.module('Blockly.PHP.lists');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\nPHP['lists_create_empty'] = function(block) {\n // Create an empty list.\n return ['array()', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_create_with'] = function(block) {\n // Create a list with any number of elements of any type.\n let code = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n code[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || 'null';\n }\n code = 'array(' + code.join(', ') + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_repeat'] = function(block) {\n // Create a list with one element repeated.\n const functionName = PHP.provideFunction_('lists_repeat', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value, $count) {\n $array = array();\n for ($index = 0; $index < $count; $index++) {\n $array[] = $value;\n }\n return $array;\n}\n`);\n const element = PHP.valueToCode(block, 'ITEM', PHP.ORDER_NONE) || 'null';\n const repeatCount = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0';\n const code = functionName + '(' + element + ', ' + repeatCount + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_length'] = function(block) {\n // String or array length.\n const functionName = PHP.provideFunction_('length', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) {\n if (is_string($value)) {\n return strlen($value);\n } else {\n return count($value);\n }\n}\n`);\n const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n return [functionName + '(' + list + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const argument0 =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_FUNCTION_CALL) || 'array()';\n return ['empty(' + argument0 + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_indexOf'] = function(block) {\n // Find an item in the list.\n const argument0 = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || \"''\";\n const argument1 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || '[]';\n let errorIndex = ' -1';\n let indexAdjustment = '';\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n indexAdjustment = ' + 1';\n }\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n // indexOf\n functionName = PHP.provideFunction_('indexOf', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) return $index${indexAdjustment};\n }\n return ${errorIndex};\n}\n`);\n } else {\n // lastIndexOf\n functionName = PHP.provideFunction_('lastIndexOf', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {\n $last = ${errorIndex};\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) $last = $index${indexAdjustment};\n }\n return $last;\n}\n`);\n }\n\n const code = functionName + '(' + argument1 + ', ' + argument0 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_getIndex'] = function(block) {\n // Get element at index.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n switch (where) {\n case 'FIRST':\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()';\n const code = list + '[0]';\n return [code, PHP.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'array_shift(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n return 'array_shift(' + list + ');\\n';\n }\n break;\n case 'LAST':\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'end(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'array_pop(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n return 'array_pop(' + list + ');\\n';\n }\n break;\n case 'FROM_START': {\n const at = PHP.getAdjusted(block, 'AT');\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()';\n const code = list + '[' + at + ']';\n return [code, PHP.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'array_splice(' + list + ', ' + at + ', 1)[0]';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n return 'array_splice(' + list + ', ' + at + ', 1);\\n';\n }\n break;\n }\n case 'FROM_END':\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const at = PHP.getAdjusted(block, 'AT', 1, true);\n const code = 'array_slice(' + list + ', ' + at + ', 1)[0]';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const at =\n PHP.getAdjusted(block, 'AT', 1, false, PHP.ORDER_SUBTRACTION);\n const code = 'array_splice(' + list + ', count(' + list + ') - ' + at +\n ', 1)[0]';\n if (mode === 'GET_REMOVE') {\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + ';\\n';\n }\n }\n break;\n case 'RANDOM': {\n const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n if (mode === 'GET') {\n const functionName = PHP.provideFunction_('lists_get_random_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) {\n return $list[rand(0,count($list)-1)];\n}\n`);\n const code = functionName + '(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const functionName =\n PHP.provideFunction_('lists_get_remove_random_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) {\n $x = rand(0,count($list)-1);\n unset($list[$x]);\n return array_values($list);\n}\n`);\n const code = functionName + '(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const functionName = PHP.provideFunction_('lists_remove_random_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) {\n unset($list[rand(0,count($list)-1)]);\n}\n`);\n return functionName + '(' + list + ');\\n';\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_getIndex).');\n};\n\nPHP['lists_setIndex'] = function(block) {\n // Set element at index.\n // Note: Until February 2013 this block did not have MODE or WHERE inputs.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const value = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || 'null';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n // Closure, which accesses and modifies 'list'.\n let cachedList;\n function cacheList() {\n if (cachedList.match(/^\\$\\w+$/)) {\n return '';\n }\n const listVar = PHP.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE);\n const code = listVar + ' = &' + cachedList + ';\\n';\n cachedList = listVar;\n return code;\n }\n switch (where) {\n case 'FIRST':\n if (mode === 'SET') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()';\n return list + '[0] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n return 'array_unshift(' + list + ', ' + value + ');\\n';\n }\n break;\n case 'LAST': {\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n if (mode === 'SET') {\n const functionName = PHP.provideFunction_('lists_set_last_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $value) {\n $list[count($list) - 1] = $value;\n}\n`);\n return functionName + '(' + list + ', ' + value + ');\\n';\n } else if (mode === 'INSERT') {\n return 'array_push(' + list + ', ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_START': {\n const at = PHP.getAdjusted(block, 'AT');\n if (mode === 'SET') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()';\n return list + '[' + at + '] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n return 'array_splice(' + list + ', ' + at + ', 0, ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_END': {\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n const at = PHP.getAdjusted(block, 'AT', 1);\n if (mode === 'SET') {\n const functionName = PHP.provideFunction_('lists_set_from_end', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {\n $list[count($list) - $at] = $value;\n}\n`);\n return functionName + '(' + list + ', ' + at + ', ' + value + ');\\n';\n } else if (mode === 'INSERT') {\n const functionName = PHP.provideFunction_('lists_insert_from_end', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {\n return array_splice($list, count($list) - $at, 0, $value);\n}\n`);\n return functionName + '(' + list + ', ' + at + ', ' + value + ');\\n';\n }\n break;\n }\n case 'RANDOM':\n cachedList =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_REFERENCE) || 'array()';\n let code = cacheList();\n const list = cachedList;\n const xVar = PHP.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE);\n code += xVar + ' = rand(0, count(' + list + ')-1);\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += 'array_splice(' + list + ', ' + xVar + ', 0, ' + value + ');\\n';\n return code;\n }\n break;\n }\n throw Error('Unhandled combination (lists_setIndex).');\n};\n\nPHP['lists_getSublist'] = function(block) {\n // Get sublist.\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = list;\n } else if (\n list.match(/^\\$\\w+$/) ||\n (where1 !== 'FROM_END' && where2 === 'FROM_START')) {\n // If the list is a simple value or doesn't require a call for length, don't\n // generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = PHP.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = PHP.getAdjusted(block, 'AT1', 1, false, PHP.ORDER_SUBTRACTION);\n at1 = 'count(' + list + ') - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n let at2;\n let length;\n switch (where2) {\n case 'FROM_START':\n at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION);\n length = at2 + ' - ';\n if (stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n length += ' + 1';\n break;\n case 'FROM_END':\n at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION);\n length = 'count(' + list + ') - ' + at2 + ' - ';\n if (stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n break;\n case 'LAST':\n length = 'count(' + list + ') - ';\n if (stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n code = 'array_slice(' + list + ', ' + at1 + ', ' + length + ')';\n } else {\n const at1 = PHP.getAdjusted(block, 'AT1');\n const at2 = PHP.getAdjusted(block, 'AT2');\n const functionName = PHP.provideFunction_('lists_get_sublist', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = count($list) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = count($list) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = count($list) - $at1;\n } else {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n return array_slice($list, $at1, $length);\n}\n`);\n code = functionName + '(' + list + ', \\'' + where1 + '\\', ' + at1 + ', \\'' +\n where2 + '\\', ' + at2 + ')';\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_sort'] = function(block) {\n // Block for sorting a list.\n const listCode = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1;\n const type = block.getFieldValue('TYPE');\n const functionName = PHP.provideFunction_('lists_sort', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $type, $direction) {\n $sortCmpFuncs = array(\n 'NUMERIC' => 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n`);\n const sortCode =\n functionName + '(' + listCode + ', \"' + type + '\", ' + direction + ')';\n return [sortCode, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_split'] = function(block) {\n // Block for splitting text into a list, or joining a list into text.\n let value_input = PHP.valueToCode(block, 'INPUT', PHP.ORDER_NONE);\n const value_delim = PHP.valueToCode(block, 'DELIM', PHP.ORDER_NONE) || \"''\";\n const mode = block.getFieldValue('MODE');\n let functionName;\n if (mode === 'SPLIT') {\n if (!value_input) {\n value_input = \"''\";\n }\n functionName = 'explode';\n } else if (mode === 'JOIN') {\n if (!value_input) {\n value_input = 'array()';\n }\n functionName = 'implode';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n const code = functionName + '(' + value_delim + ', ' + value_input + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_reverse'] = function(block) {\n // Block for reversing a list.\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n const code = 'array_reverse(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for colour blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.colour');\n\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['colour_picker'] = function(block) {\n // Colour picker.\n const code = PHP.quote_(block.getFieldValue('COLOUR'));\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['colour_random'] = function(block) {\n // Generate a random colour.\n const functionName = PHP.provideFunction_('colour_random', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}() {\n return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);\n}\n`);\n const code = functionName + '()';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['colour_rgb'] = function(block) {\n // Compose a colour from RGB components expressed as percentages.\n const red = PHP.valueToCode(block, 'RED', PHP.ORDER_NONE) || 0;\n const green = PHP.valueToCode(block, 'GREEN', PHP.ORDER_NONE) || 0;\n const blue = PHP.valueToCode(block, 'BLUE', PHP.ORDER_NONE) || 0;\n const functionName = PHP.provideFunction_('colour_rgb', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($r, $g, $b) {\n $r = round(max(min($r, 100), 0) * 2.55);\n $g = round(max(min($g, 100), 0) * 2.55);\n $b = round(max(min($b, 100), 0) * 2.55);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n`);\n const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['colour_blend'] = function(block) {\n // Blend two colours together.\n const c1 = PHP.valueToCode(block, 'COLOUR1', PHP.ORDER_NONE) || \"'#000000'\";\n const c2 = PHP.valueToCode(block, 'COLOUR2', PHP.ORDER_NONE) || \"'#000000'\";\n const ratio = PHP.valueToCode(block, 'RATIO', PHP.ORDER_NONE) || 0.5;\n const functionName = PHP.provideFunction_('colour_blend', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($c1, $c2, $ratio) {\n $ratio = max(min($ratio, 1), 0);\n $r1 = hexdec(substr($c1, 1, 2));\n $g1 = hexdec(substr($c1, 3, 2));\n $b1 = hexdec(substr($c1, 5, 2));\n $r2 = hexdec(substr($c2, 1, 2));\n $g2 = hexdec(substr($c2, 3, 2));\n $b2 = hexdec(substr($c2, 5, 2));\n $r = round($r1 * (1 - $ratio) + $r2 * $ratio);\n $g = round($g1 * (1 - $ratio) + $g2 * $ratio);\n $b = round($b1 * (1 - $ratio) + $b2 * $ratio);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n`);\n const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Complete helper functions for generating PHP for\n * blocks. This is the entrypoint for php_compressed.js.\n * @suppress {extraRequire}\n */\n'use strict';\n\ngoog.module('Blockly.PHP.all');\n\nconst moduleExports = goog.require('Blockly.PHP');\ngoog.require('Blockly.PHP.colour');\ngoog.require('Blockly.PHP.lists');\ngoog.require('Blockly.PHP.logic');\ngoog.require('Blockly.PHP.loops');\ngoog.require('Blockly.PHP.math');\ngoog.require('Blockly.PHP.procedures');\ngoog.require('Blockly.PHP.texts');\ngoog.require('Blockly.PHP.variables');\ngoog.require('Blockly.PHP.variablesDynamic');\n\nexports = moduleExports;\n"]}
|
|
1
|
+
{"version":3,"sources":["generators/php.js","generators/php/colour.js","generators/php/lists.js","generators/php/logic.js","generators/php/loops.js","generators/php/math.js","generators/php/procedures.js","generators/php/text.js","generators/php/variables.js","generators/php/variables_dynamic.js","generators/php/all.js"],"names":["stringUtils","CodeGenerator","inputTypes","Names","PHP","addReservedWords","ORDER_ATOMIC","ORDER_CLONE","ORDER_NEW","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_POWER","ORDER_INCREMENT","ORDER_DECREMENT","ORDER_BITWISE_NOT","ORDER_CAST","ORDER_SUPPRESS_ERROR","ORDER_INSTANCEOF","ORDER_LOGICAL_NOT","ORDER_UNARY_PLUS","ORDER_UNARY_NEGATION","ORDER_MULTIPLICATION","ORDER_DIVISION","ORDER_MODULUS","ORDER_ADDITION","ORDER_SUBTRACTION","ORDER_STRING_CONCAT","ORDER_BITWISE_SHIFT","ORDER_RELATIONAL","ORDER_EQUALITY","ORDER_REFERENCE","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_IF_NULL","ORDER_CONDITIONAL","ORDER_ASSIGNMENT","ORDER_LOGICAL_AND_WEAK","ORDER_LOGICAL_XOR","ORDER_LOGICAL_OR_WEAK","ORDER_NONE","ORDER_OVERRIDES","isInitialized","init","PHP.init","workspace","Object","getPrototypeOf","call","nameDB_","reset","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","finish","PHP.finish","code","definitions","values","definitions_","join","scrubNakedValue","PHP.scrubNakedValue","line","quote_","PHP.quote_","string","replace","multiline_quote_","PHP.multiline_quote_","split","map","lines","scrub_","PHP.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","wrap","COMMENT_WRAP","prefixLines","i","inputList","length","type","VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjusted","PHP.getAdjusted","atId","opt_delta","opt_negate","opt_order","delta","order","options","oneBasedIndex","defaultAtIndex","outerOrder","innerOrder","at","valueToCode","isNumber","Number","Math","floor","getFieldValue","provideFunction_","functionName","FUNCTION_NAME_PLACEHOLDER_","red","green","blue","c1","c2","ratio","NameType","Array","itemCount_","element","repeatCount","list","argument0","argument1","errorIndex","indexAdjustment","mode","Error","where","value","cachedList","match","listVar","getDistinctName","VARIABLE","xVar","where1","where2","at1","at2","String","listCode","direction","value_input","value_delim","n","branchCode","conditionCode","STATEMENT_PREFIX","injectId","statementToCode","STATEMENT_SUFFIX","INDENT","getInput","operator","OPERATORS","defaultArgument","value_if","value_then","value_else","repeats","getField","branch","addLoopTrap","loopVar","endVar","until","variable0","getName","increment","up","step","abs","startVar","incVar","xfix","loop","getSurroundLoop","suppressPrefixSuffix","Infinity","tuple","arg","CONSTANTS","PROPERTIES","dropdownProperty","prefix","suffix","inputOrder","outputOrder","numberToCheck","divisor","varName","func","argument2","Variables","globals","usedVariables","allUsedVarModels","variable","name","getVars","indexOf","push","devVarList","allDeveloperVariables","DEVELOPER_VARIABLE","globalStr","funcName","PROCEDURE","xfix1","loopTrap","INFINITE_LOOP_TRAP","returnValue","xfix2","args","variables","hasReturnValue_","element0","element1","elements","text","substring","msg","sub","from","to","exports","moduleExports"],"mappings":"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","file":"php_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Helper functions for generating PHP for blocks.\n * @suppress {checkTypes|globalThis}\n */\n'use strict';\n\ngoog.module('Blockly.PHP');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {Block} = goog.requireType('Blockly.Block');\nconst {CodeGenerator} = goog.require('Blockly.CodeGenerator');\nconst {inputTypes} = goog.require('Blockly.inputTypes');\nconst {Names} = goog.require('Blockly.Names');\nconst {Workspace} = goog.requireType('Blockly.Workspace');\n\n\n/**\n * PHP code generator.\n * @type {!CodeGenerator}\n */\nconst PHP = new CodeGenerator('PHP');\n\n/**\n * List of illegal variable names.\n * This is not intended to be a security feature. Blockly is 100% client-side,\n * so bypassing this list is trivial. This is intended to prevent users from\n * accidentally clobbering a built-in object or function.\n */\nPHP.addReservedWords(\n // http://php.net/manual/en/reserved.keywords.php\n '__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,' +\n 'clone,const,continue,declare,default,die,do,echo,else,elseif,empty,' +\n 'enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,' +\n 'final,for,foreach,function,global,goto,if,implements,include,' +\n 'include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,' +\n 'print,private,protected,public,require,require_once,return,static,' +\n 'switch,throw,trait,try,unset,use,var,while,xor,' +\n // http://php.net/manual/en/reserved.constants.php\n 'PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,' +\n 'PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,' +\n 'PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,' +\n 'PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,' +\n 'PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,' +\n 'PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,' +\n 'PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,' +\n 'E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,' +\n 'E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,' +\n 'E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,' +\n '__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__');\n\n/**\n * Order of operation ENUMs.\n * http://php.net/manual/en/language.operators.precedence.php\n */\nPHP.ORDER_ATOMIC = 0; // 0 \"\" ...\nPHP.ORDER_CLONE = 1; // clone\nPHP.ORDER_NEW = 1; // new\nPHP.ORDER_MEMBER = 2.1; // []\nPHP.ORDER_FUNCTION_CALL = 2.2; // ()\nPHP.ORDER_POWER = 3; // **\nPHP.ORDER_INCREMENT = 4; // ++\nPHP.ORDER_DECREMENT = 4; // --\nPHP.ORDER_BITWISE_NOT = 4; // ~\nPHP.ORDER_CAST = 4; // (int) (float) (string) (array) ...\nPHP.ORDER_SUPPRESS_ERROR = 4; // @\nPHP.ORDER_INSTANCEOF = 5; // instanceof\nPHP.ORDER_LOGICAL_NOT = 6; // !\nPHP.ORDER_UNARY_PLUS = 7.1; // +\nPHP.ORDER_UNARY_NEGATION = 7.2; // -\nPHP.ORDER_MULTIPLICATION = 8.1; // *\nPHP.ORDER_DIVISION = 8.2; // /\nPHP.ORDER_MODULUS = 8.3; // %\nPHP.ORDER_ADDITION = 9.1; // +\nPHP.ORDER_SUBTRACTION = 9.2; // -\nPHP.ORDER_STRING_CONCAT = 9.3; // .\nPHP.ORDER_BITWISE_SHIFT = 10; // << >>\nPHP.ORDER_RELATIONAL = 11; // < <= > >=\nPHP.ORDER_EQUALITY = 12; // == != === !== <> <=>\nPHP.ORDER_REFERENCE = 13; // &\nPHP.ORDER_BITWISE_AND = 13; // &\nPHP.ORDER_BITWISE_XOR = 14; // ^\nPHP.ORDER_BITWISE_OR = 15; // |\nPHP.ORDER_LOGICAL_AND = 16; // &&\nPHP.ORDER_LOGICAL_OR = 17; // ||\nPHP.ORDER_IF_NULL = 18; // ??\nPHP.ORDER_CONDITIONAL = 19; // ?:\nPHP.ORDER_ASSIGNMENT = 20; // = += -= *= /= %= <<= >>= ...\nPHP.ORDER_LOGICAL_AND_WEAK = 21; // and\nPHP.ORDER_LOGICAL_XOR = 22; // xor\nPHP.ORDER_LOGICAL_OR_WEAK = 23; // or\nPHP.ORDER_NONE = 99; // (...)\n\n/**\n * List of outer-inner pairings that do NOT require parentheses.\n * @type {!Array<!Array<number>>}\n */\nPHP.ORDER_OVERRIDES = [\n // (foo()).bar() -> foo().bar()\n // (foo())[0] -> foo()[0]\n [PHP.ORDER_MEMBER, PHP.ORDER_FUNCTION_CALL],\n // (foo[0])[1] -> foo[0][1]\n // (foo.bar).baz -> foo.bar.baz\n [PHP.ORDER_MEMBER, PHP.ORDER_MEMBER],\n // !(!foo) -> !!foo\n [PHP.ORDER_LOGICAL_NOT, PHP.ORDER_LOGICAL_NOT],\n // a * (b * c) -> a * b * c\n [PHP.ORDER_MULTIPLICATION, PHP.ORDER_MULTIPLICATION],\n // a + (b + c) -> a + b + c\n [PHP.ORDER_ADDITION, PHP.ORDER_ADDITION],\n // a && (b && c) -> a && b && c\n [PHP.ORDER_LOGICAL_AND, PHP.ORDER_LOGICAL_AND],\n // a || (b || c) -> a || b || c\n [PHP.ORDER_LOGICAL_OR, PHP.ORDER_LOGICAL_OR]\n];\n\n/**\n * Whether the init method has been called.\n * @type {?boolean}\n */\nPHP.isInitialized = false;\n\n/**\n * Initialise the database of variable names.\n * @param {!Workspace} workspace Workspace to generate code from.\n */\nPHP.init = function(workspace) {\n // Call Blockly.CodeGenerator's init.\n Object.getPrototypeOf(this).init.call(this);\n\n if (!this.nameDB_) {\n this.nameDB_ = new Names(this.RESERVED_WORDS_, '$');\n } else {\n this.nameDB_.reset();\n }\n\n this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\n\n this.isInitialized = true;\n};\n\n/**\n * Prepend the generated code with the variable definitions.\n * @param {string} code Generated code.\n * @return {string} Completed code.\n */\nPHP.finish = function(code) {\n // Convert the definitions dictionary into a list.\n const definitions = Object.values(this.definitions_);\n // Call Blockly.CodeGenerator's finish.\n code = Object.getPrototypeOf(this).finish.call(this, code);\n this.isInitialized = false;\n\n this.nameDB_.reset();\n return definitions.join('\\n\\n') + '\\n\\n\\n' + code;\n};\n\n/**\n * Naked values are top-level blocks with outputs that aren't plugged into\n * anything. A trailing semicolon is needed to make this legal.\n * @param {string} line Line of generated code.\n * @return {string} Legal line of code.\n */\nPHP.scrubNakedValue = function(line) {\n return line + ';\\n';\n};\n\n/**\n * Encode a string as a properly escaped PHP string, complete with\n * quotes.\n * @param {string} string Text to encode.\n * @return {string} PHP string.\n * @protected\n */\nPHP.quote_ = function(string) {\n string = string.replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\n/g, '\\\\\\n')\n .replace(/'/g, '\\\\\\'');\n return '\\'' + string + '\\'';\n};\n\n/**\n * Encode a string as a properly escaped multiline PHP string, complete with\n * quotes.\n * @param {string} string Text to encode.\n * @return {string} PHP string.\n * @protected\n */\nPHP.multiline_quote_ = function(string) {\n const lines = string.split(/\\n/g).map(this.quote_);\n // Join with the following, plus a newline:\n // . \"\\n\" .\n // Newline escaping only works in double-quoted strings.\n return lines.join(' . \\\"\\\\n\\\" .\\n');\n};\n\n/**\n * Common tasks for generating PHP from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n * @param {!Block} block The current block.\n * @param {string} code The PHP code created for this block.\n * @param {boolean=} opt_thisOnly True to generate code for only this statement.\n * @return {string} PHP code with comments and subsequent blocks added.\n * @protected\n */\nPHP.scrub_ = function(block, code, opt_thisOnly) {\n let commentCode = '';\n // Only collect comments for blocks that aren't inline.\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\n // Collect comment for this block.\n let comment = block.getCommentText();\n if (comment) {\n comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3);\n commentCode += this.prefixLines(comment, '// ') + '\\n';\n }\n // Collect comments for all value arguments.\n // Don't collect comments for nested statements.\n for (let i = 0; i < block.inputList.length; i++) {\n if (block.inputList[i].type === inputTypes.VALUE) {\n const childBlock = block.inputList[i].connection.targetBlock();\n if (childBlock) {\n comment = this.allNestedComments(childBlock);\n if (comment) {\n commentCode += this.prefixLines(comment, '// ');\n }\n }\n }\n }\n }\n const nextBlock = block.nextConnection && block.nextConnection.targetBlock();\n const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock);\n return commentCode + code + nextCode;\n};\n\n/**\n * Gets a property and adjusts the value while taking into account indexing.\n * @param {!Block} block The block.\n * @param {string} atId The property ID of the element to get.\n * @param {number=} opt_delta Value to add.\n * @param {boolean=} opt_negate Whether to negate the value.\n * @param {number=} opt_order The highest order acting on this value.\n * @return {string|number}\n */\nPHP.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) {\n let delta = opt_delta || 0;\n let order = opt_order || this.ORDER_NONE;\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n let defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n let outerOrder = order;\n let innerOrder;\n if (delta > 0) {\n outerOrder = this.ORDER_ADDITION;\n innerOrder = this.ORDER_ADDITION;\n } else if (delta < 0) {\n outerOrder = this.ORDER_SUBTRACTION;\n innerOrder = this.ORDER_SUBTRACTION;\n } else if (opt_negate) {\n outerOrder = this.ORDER_UNARY_NEGATION;\n innerOrder = this.ORDER_UNARY_NEGATION;\n }\n let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex;\n\n if (stringUtils.isNumber(at)) {\n // If the index is a naked number, adjust it right now.\n at = Number(at) + delta;\n if (opt_negate) {\n at = -at;\n }\n } else {\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = at + ' + ' + delta;\n } else if (delta < 0) {\n at = at + ' - ' + -delta;\n }\n if (opt_negate) {\n if (delta) {\n at = '-(' + at + ')';\n } else {\n at = '-' + at;\n }\n }\n innerOrder = Math.floor(innerOrder);\n order = Math.floor(order);\n if (innerOrder && order >= innerOrder) {\n at = '(' + at + ')';\n }\n }\n return at;\n};\n\nexports.phpGenerator = PHP;\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for colour blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.colour');\n\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['colour_picker'] = function(block) {\n // Colour picker.\n const code = PHP.quote_(block.getFieldValue('COLOUR'));\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['colour_random'] = function(block) {\n // Generate a random colour.\n const functionName = PHP.provideFunction_('colour_random', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}() {\n return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);\n}\n`);\n const code = functionName + '()';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['colour_rgb'] = function(block) {\n // Compose a colour from RGB components expressed as percentages.\n const red = PHP.valueToCode(block, 'RED', PHP.ORDER_NONE) || 0;\n const green = PHP.valueToCode(block, 'GREEN', PHP.ORDER_NONE) || 0;\n const blue = PHP.valueToCode(block, 'BLUE', PHP.ORDER_NONE) || 0;\n const functionName = PHP.provideFunction_('colour_rgb', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($r, $g, $b) {\n $r = round(max(min($r, 100), 0) * 2.55);\n $g = round(max(min($g, 100), 0) * 2.55);\n $b = round(max(min($b, 100), 0) * 2.55);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n`);\n const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['colour_blend'] = function(block) {\n // Blend two colours together.\n const c1 = PHP.valueToCode(block, 'COLOUR1', PHP.ORDER_NONE) || \"'#000000'\";\n const c2 = PHP.valueToCode(block, 'COLOUR2', PHP.ORDER_NONE) || \"'#000000'\";\n const ratio = PHP.valueToCode(block, 'RATIO', PHP.ORDER_NONE) || 0.5;\n const functionName = PHP.provideFunction_('colour_blend', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($c1, $c2, $ratio) {\n $ratio = max(min($ratio, 1), 0);\n $r1 = hexdec(substr($c1, 1, 2));\n $g1 = hexdec(substr($c1, 3, 2));\n $b1 = hexdec(substr($c1, 5, 2));\n $r2 = hexdec(substr($c2, 1, 2));\n $g2 = hexdec(substr($c2, 3, 2));\n $b2 = hexdec(substr($c2, 5, 2));\n $r = round($r1 * (1 - $ratio) + $r2 * $ratio);\n $g = round($g1 * (1 - $ratio) + $g2 * $ratio);\n $b = round($b1 * (1 - $ratio) + $b2 * $ratio);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n`);\n const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for list blocks.\n */\n\n/**\n * Lists in PHP are known to break when non-variables are passed into blocks\n * that require a list. PHP, unlike other languages, passes arrays as reference\n * value instead of value so we are unable to support it to the extent we can\n * for the other languages.\n * For example, a ternary operator with two arrays will return the array by\n * value and that cannot be passed into any of the built-in array functions for\n * PHP (because only variables can be passed by reference).\n * ex: end(true ? list1 : list2)\n */\n'use strict';\n\ngoog.module('Blockly.PHP.lists');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\nPHP['lists_create_empty'] = function(block) {\n // Create an empty list.\n return ['array()', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_create_with'] = function(block) {\n // Create a list with any number of elements of any type.\n let code = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n code[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || 'null';\n }\n code = 'array(' + code.join(', ') + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_repeat'] = function(block) {\n // Create a list with one element repeated.\n const functionName = PHP.provideFunction_('lists_repeat', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value, $count) {\n $array = array();\n for ($index = 0; $index < $count; $index++) {\n $array[] = $value;\n }\n return $array;\n}\n`);\n const element = PHP.valueToCode(block, 'ITEM', PHP.ORDER_NONE) || 'null';\n const repeatCount = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0';\n const code = functionName + '(' + element + ', ' + repeatCount + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_length'] = function(block) {\n // String or array length.\n const functionName = PHP.provideFunction_('length', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) {\n if (is_string($value)) {\n return strlen($value);\n } else {\n return count($value);\n }\n}\n`);\n const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n return [functionName + '(' + list + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const argument0 =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_FUNCTION_CALL) || 'array()';\n return ['empty(' + argument0 + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_indexOf'] = function(block) {\n // Find an item in the list.\n const argument0 = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || \"''\";\n const argument1 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || '[]';\n let errorIndex = ' -1';\n let indexAdjustment = '';\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n indexAdjustment = ' + 1';\n }\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n // indexOf\n functionName = PHP.provideFunction_('indexOf', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) return $index${indexAdjustment};\n }\n return ${errorIndex};\n}\n`);\n } else {\n // lastIndexOf\n functionName = PHP.provideFunction_('lastIndexOf', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {\n $last = ${errorIndex};\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) $last = $index${indexAdjustment};\n }\n return $last;\n}\n`);\n }\n\n const code = functionName + '(' + argument1 + ', ' + argument0 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_getIndex'] = function(block) {\n // Get element at index.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n switch (where) {\n case 'FIRST':\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()';\n const code = list + '[0]';\n return [code, PHP.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'array_shift(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n return 'array_shift(' + list + ');\\n';\n }\n break;\n case 'LAST':\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'end(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'array_pop(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n return 'array_pop(' + list + ');\\n';\n }\n break;\n case 'FROM_START': {\n const at = PHP.getAdjusted(block, 'AT');\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()';\n const code = list + '[' + at + ']';\n return [code, PHP.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const code = 'array_splice(' + list + ', ' + at + ', 1)[0]';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n return 'array_splice(' + list + ', ' + at + ', 1);\\n';\n }\n break;\n }\n case 'FROM_END':\n if (mode === 'GET') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const at = PHP.getAdjusted(block, 'AT', 1, true);\n const code = 'array_slice(' + list + ', ' + at + ', 1)[0]';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') {\n const list =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n const at =\n PHP.getAdjusted(block, 'AT', 1, false, PHP.ORDER_SUBTRACTION);\n const code = 'array_splice(' + list + ', count(' + list + ') - ' + at +\n ', 1)[0]';\n if (mode === 'GET_REMOVE') {\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + ';\\n';\n }\n }\n break;\n case 'RANDOM': {\n const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()';\n if (mode === 'GET') {\n const functionName = PHP.provideFunction_('lists_get_random_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) {\n return $list[rand(0,count($list)-1)];\n}\n`);\n const code = functionName + '(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const functionName =\n PHP.provideFunction_('lists_get_remove_random_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) {\n $x = rand(0,count($list)-1);\n unset($list[$x]);\n return array_values($list);\n}\n`);\n const code = functionName + '(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const functionName = PHP.provideFunction_('lists_remove_random_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) {\n unset($list[rand(0,count($list)-1)]);\n}\n`);\n return functionName + '(' + list + ');\\n';\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_getIndex).');\n};\n\nPHP['lists_setIndex'] = function(block) {\n // Set element at index.\n // Note: Until February 2013 this block did not have MODE or WHERE inputs.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const value = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || 'null';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n // Closure, which accesses and modifies 'list'.\n let cachedList;\n function cacheList() {\n if (cachedList.match(/^\\$\\w+$/)) {\n return '';\n }\n const listVar = PHP.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE);\n const code = listVar + ' = &' + cachedList + ';\\n';\n cachedList = listVar;\n return code;\n }\n switch (where) {\n case 'FIRST':\n if (mode === 'SET') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()';\n return list + '[0] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n return 'array_unshift(' + list + ', ' + value + ');\\n';\n }\n break;\n case 'LAST': {\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n if (mode === 'SET') {\n const functionName = PHP.provideFunction_('lists_set_last_item', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $value) {\n $list[count($list) - 1] = $value;\n}\n`);\n return functionName + '(' + list + ', ' + value + ');\\n';\n } else if (mode === 'INSERT') {\n return 'array_push(' + list + ', ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_START': {\n const at = PHP.getAdjusted(block, 'AT');\n if (mode === 'SET') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()';\n return list + '[' + at + '] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n const list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n return 'array_splice(' + list + ', ' + at + ', 0, ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_END': {\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n const at = PHP.getAdjusted(block, 'AT', 1);\n if (mode === 'SET') {\n const functionName = PHP.provideFunction_('lists_set_from_end', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {\n $list[count($list) - $at] = $value;\n}\n`);\n return functionName + '(' + list + ', ' + at + ', ' + value + ');\\n';\n } else if (mode === 'INSERT') {\n const functionName = PHP.provideFunction_('lists_insert_from_end', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {\n return array_splice($list, count($list) - $at, 0, $value);\n}\n`);\n return functionName + '(' + list + ', ' + at + ', ' + value + ');\\n';\n }\n break;\n }\n case 'RANDOM':\n cachedList =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_REFERENCE) || 'array()';\n let code = cacheList();\n const list = cachedList;\n const xVar = PHP.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE);\n code += xVar + ' = rand(0, count(' + list + ')-1);\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += 'array_splice(' + list + ', ' + xVar + ', 0, ' + value + ');\\n';\n return code;\n }\n break;\n }\n throw Error('Unhandled combination (lists_setIndex).');\n};\n\nPHP['lists_getSublist'] = function(block) {\n // Get sublist.\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = list;\n } else if (\n list.match(/^\\$\\w+$/) ||\n (where1 !== 'FROM_END' && where2 === 'FROM_START')) {\n // If the list is a simple value or doesn't require a call for length, don't\n // generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = PHP.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = PHP.getAdjusted(block, 'AT1', 1, false, PHP.ORDER_SUBTRACTION);\n at1 = 'count(' + list + ') - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n let at2;\n let length;\n switch (where2) {\n case 'FROM_START':\n at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION);\n length = at2 + ' - ';\n if (stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n length += ' + 1';\n break;\n case 'FROM_END':\n at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION);\n length = 'count(' + list + ') - ' + at2 + ' - ';\n if (stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n break;\n case 'LAST':\n length = 'count(' + list + ') - ';\n if (stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n code = 'array_slice(' + list + ', ' + at1 + ', ' + length + ')';\n } else {\n const at1 = PHP.getAdjusted(block, 'AT1');\n const at2 = PHP.getAdjusted(block, 'AT2');\n const functionName = PHP.provideFunction_('lists_get_sublist', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = count($list) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = count($list) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = count($list) - $at1;\n } else {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n return array_slice($list, $at1, $length);\n}\n`);\n code = functionName + '(' + list + ', \\'' + where1 + '\\', ' + at1 + ', \\'' +\n where2 + '\\', ' + at2 + ')';\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_sort'] = function(block) {\n // Block for sorting a list.\n const listCode = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1;\n const type = block.getFieldValue('TYPE');\n const functionName = PHP.provideFunction_('lists_sort', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $type, $direction) {\n $sortCmpFuncs = array(\n 'NUMERIC' => 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n`);\n const sortCode =\n functionName + '(' + listCode + ', \"' + type + '\", ' + direction + ')';\n return [sortCode, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_split'] = function(block) {\n // Block for splitting text into a list, or joining a list into text.\n let value_input = PHP.valueToCode(block, 'INPUT', PHP.ORDER_NONE);\n const value_delim = PHP.valueToCode(block, 'DELIM', PHP.ORDER_NONE) || \"''\";\n const mode = block.getFieldValue('MODE');\n let functionName;\n if (mode === 'SPLIT') {\n if (!value_input) {\n value_input = \"''\";\n }\n functionName = 'explode';\n } else if (mode === 'JOIN') {\n if (!value_input) {\n value_input = 'array()';\n }\n functionName = 'implode';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n const code = functionName + '(' + value_delim + ', ' + value_input + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['lists_reverse'] = function(block) {\n // Block for reversing a list.\n const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n const code = 'array_reverse(' + list + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for logic blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.logic');\n\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['controls_if'] = function(block) {\n // If/elseif/else condition.\n let n = 0;\n let code = '', branchCode, conditionCode;\n if (PHP.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n code += PHP.injectId(PHP.STATEMENT_PREFIX, block);\n }\n do {\n conditionCode = PHP.valueToCode(block, 'IF' + n, PHP.ORDER_NONE) || 'false';\n branchCode = PHP.statementToCode(block, 'DO' + n);\n if (PHP.STATEMENT_SUFFIX) {\n branchCode = PHP.prefixLines(\n PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) +\n branchCode;\n }\n code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\\n' +\n branchCode + '}';\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || PHP.STATEMENT_SUFFIX) {\n branchCode = PHP.statementToCode(block, 'ELSE');\n if (PHP.STATEMENT_SUFFIX) {\n branchCode = PHP.prefixLines(\n PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) +\n branchCode;\n }\n code += ' else {\\n' + branchCode + '}';\n }\n return code + '\\n';\n};\n\nPHP['controls_ifelse'] = PHP['controls_if'];\n\nPHP['logic_compare'] = function(block) {\n // Comparison operator.\n const OPERATORS =\n {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='};\n const operator = OPERATORS[block.getFieldValue('OP')];\n const order = (operator === '==' || operator === '!=') ? PHP.ORDER_EQUALITY :\n PHP.ORDER_RELATIONAL;\n const argument0 = PHP.valueToCode(block, 'A', order) || '0';\n const argument1 = PHP.valueToCode(block, 'B', order) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nPHP['logic_operation'] = function(block) {\n // Operations 'and', 'or'.\n const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||';\n const order =\n (operator === '&&') ? PHP.ORDER_LOGICAL_AND : PHP.ORDER_LOGICAL_OR;\n let argument0 = PHP.valueToCode(block, 'A', order);\n let argument1 = PHP.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'false';\n argument1 = 'false';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = (operator === '&&') ? 'true' : 'false';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nPHP['logic_negate'] = function(block) {\n // Negation.\n const order = PHP.ORDER_LOGICAL_NOT;\n const argument0 = PHP.valueToCode(block, 'BOOL', order) || 'true';\n const code = '!' + argument0;\n return [code, order];\n};\n\nPHP['logic_boolean'] = function(block) {\n // Boolean values true and false.\n const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false';\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['logic_null'] = function(block) {\n // Null data type.\n return ['null', PHP.ORDER_ATOMIC];\n};\n\nPHP['logic_ternary'] = function(block) {\n // Ternary operator.\n const value_if =\n PHP.valueToCode(block, 'IF', PHP.ORDER_CONDITIONAL) || 'false';\n const value_then =\n PHP.valueToCode(block, 'THEN', PHP.ORDER_CONDITIONAL) || 'null';\n const value_else =\n PHP.valueToCode(block, 'ELSE', PHP.ORDER_CONDITIONAL) || 'null';\n const code = value_if + ' ? ' + value_then + ' : ' + value_else;\n return [code, PHP.ORDER_CONDITIONAL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for loop blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.loops');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['controls_repeat_ext'] = function(block) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(Number(block.getFieldValue('TIMES')));\n } else {\n // External number.\n repeats = PHP.valueToCode(block, 'TIMES', PHP.ORDER_ASSIGNMENT) || '0';\n }\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n let code = '';\n const loopVar = PHP.nameDB_.getDistinctName('count', NameType.VARIABLE);\n let endVar = repeats;\n if (!repeats.match(/^\\w+$/) && !stringUtils.isNumber(repeats)) {\n endVar = PHP.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE);\n code += endVar + ' = ' + repeats + ';\\n';\n }\n code += 'for (' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' +\n loopVar + '++) {\\n' + branch + '}\\n';\n return code;\n};\n\nPHP['controls_repeat'] = PHP['controls_repeat_ext'];\n\nPHP['controls_whileUntil'] = function(block) {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 =\n PHP.valueToCode(\n block, 'BOOL', until ? PHP.ORDER_LOGICAL_NOT : PHP.ORDER_NONE) ||\n 'false';\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n if (until) {\n argument0 = '!' + argument0;\n }\n return 'while (' + argument0 + ') {\\n' + branch + '}\\n';\n};\n\nPHP['controls_for'] = function(block) {\n // For loop.\n const variable0 =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_ASSIGNMENT) || '0';\n const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || '0';\n const increment = PHP.valueToCode(block, 'BY', PHP.ORDER_ASSIGNMENT) || '1';\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n let code;\n if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)) {\n // All arguments are simple numbers.\n const up = Number(argument0) <= Number(argument1);\n code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 +\n (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0;\n const step = Math.abs(Number(increment));\n if (step === 1) {\n code += up ? '++' : '--';\n } else {\n code += (up ? ' += ' : ' -= ') + step;\n }\n code += ') {\\n' + branch + '}\\n';\n } else {\n code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let startVar = argument0;\n if (!argument0.match(/^\\w+$/) && !stringUtils.isNumber(argument0)) {\n startVar =\n PHP.nameDB_.getDistinctName(variable0 + '_start', NameType.VARIABLE);\n code += startVar + ' = ' + argument0 + ';\\n';\n }\n let endVar = argument1;\n if (!argument1.match(/^\\w+$/) && !stringUtils.isNumber(argument1)) {\n endVar =\n PHP.nameDB_.getDistinctName(variable0 + '_end', NameType.VARIABLE);\n code += endVar + ' = ' + argument1 + ';\\n';\n }\n // Determine loop direction at start, in case one of the bounds\n // changes during loop execution.\n const incVar =\n PHP.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE);\n code += incVar + ' = ';\n if (stringUtils.isNumber(increment)) {\n code += Math.abs(increment) + ';\\n';\n } else {\n code += 'abs(' + increment + ');\\n';\n }\n code += 'if (' + startVar + ' > ' + endVar + ') {\\n';\n code += PHP.INDENT + incVar + ' = -' + incVar + ';\\n';\n code += '}\\n';\n code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar +\n ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 +\n ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\\n' +\n branch + '}\\n';\n }\n return code;\n};\n\nPHP['controls_forEach'] = function(block) {\n // For each loop.\n const variable0 =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_ASSIGNMENT) || '[]';\n let branch = PHP.statementToCode(block, 'DO');\n branch = PHP.addLoopTrap(branch, block);\n let code = '';\n code +=\n 'foreach (' + argument0 + ' as ' + variable0 + ') {\\n' + branch + '}\\n';\n return code;\n};\n\nPHP['controls_flow_statements'] = function(block) {\n // Flow statements: continue, break.\n let xfix = '';\n if (PHP.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n xfix += PHP.injectId(PHP.STATEMENT_PREFIX, block);\n }\n if (PHP.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the break/continue is triggered.\n xfix += PHP.injectId(PHP.STATEMENT_SUFFIX, block);\n }\n if (PHP.STATEMENT_PREFIX) {\n const loop = block.getSurroundLoop();\n if (loop && !loop.suppressPrefixSuffix) {\n // Inject loop's statement prefix here since the regular one at the end\n // of the loop will not get executed if 'continue' is triggered.\n // In the case of 'break', a prefix is needed due to the loop's suffix.\n xfix += PHP.injectId(PHP.STATEMENT_PREFIX, loop);\n }\n }\n switch (block.getFieldValue('FLOW')) {\n case 'BREAK':\n return xfix + 'break;\\n';\n case 'CONTINUE':\n return xfix + 'continue;\\n';\n }\n throw Error('Unknown flow statement.');\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for math blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.math');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['math_number'] = function(block) {\n // Numeric value.\n let code = Number(block.getFieldValue('NUM'));\n const order = code >= 0 ? PHP.ORDER_ATOMIC : PHP.ORDER_UNARY_NEGATION;\n if (code === Infinity) {\n code = 'INF';\n } else if (code === -Infinity) {\n code = '-INF';\n }\n return [code, order];\n};\n\nPHP['math_arithmetic'] = function(block) {\n // Basic arithmetic operators, and power.\n const OPERATORS = {\n 'ADD': [' + ', PHP.ORDER_ADDITION],\n 'MINUS': [' - ', PHP.ORDER_SUBTRACTION],\n 'MULTIPLY': [' * ', PHP.ORDER_MULTIPLICATION],\n 'DIVIDE': [' / ', PHP.ORDER_DIVISION],\n 'POWER': [' ** ', PHP.ORDER_POWER],\n };\n const tuple = OPERATORS[block.getFieldValue('OP')];\n const operator = tuple[0];\n const order = tuple[1];\n const argument0 = PHP.valueToCode(block, 'A', order) || '0';\n const argument1 = PHP.valueToCode(block, 'B', order) || '0';\n const code = argument0 + operator + argument1;\n return [code, order];\n};\n\nPHP['math_single'] = function(block) {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\n let code;\n let arg;\n if (operator === 'NEG') {\n // Negation is a special case given its different operator precedence.\n arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_UNARY_NEGATION) || '0';\n if (arg[0] === '-') {\n // --3 is not legal in JS.\n arg = ' ' + arg;\n }\n code = '-' + arg;\n return [code, PHP.ORDER_UNARY_NEGATION];\n }\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_DIVISION) || '0';\n } else {\n arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0';\n }\n // First, handle cases which generate values that don't need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ABS':\n code = 'abs(' + arg + ')';\n break;\n case 'ROOT':\n code = 'sqrt(' + arg + ')';\n break;\n case 'LN':\n code = 'log(' + arg + ')';\n break;\n case 'EXP':\n code = 'exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'round(' + arg + ')';\n break;\n case 'ROUNDUP':\n code = 'ceil(' + arg + ')';\n break;\n case 'ROUNDDOWN':\n code = 'floor(' + arg + ')';\n break;\n case 'SIN':\n code = 'sin(' + arg + ' / 180 * pi())';\n break;\n case 'COS':\n code = 'cos(' + arg + ' / 180 * pi())';\n break;\n case 'TAN':\n code = 'tan(' + arg + ' / 180 * pi())';\n break;\n }\n if (code) {\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n // Second, handle cases which generate values that may need parentheses\n // wrapping the code.\n switch (operator) {\n case 'LOG10':\n code = 'log(' + arg + ') / log(10)';\n break;\n case 'ASIN':\n code = 'asin(' + arg + ') / pi() * 180';\n break;\n case 'ACOS':\n code = 'acos(' + arg + ') / pi() * 180';\n break;\n case 'ATAN':\n code = 'atan(' + arg + ') / pi() * 180';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, PHP.ORDER_DIVISION];\n};\n\nPHP['math_constant'] = function(block) {\n // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.\n const CONSTANTS = {\n 'PI': ['M_PI', PHP.ORDER_ATOMIC],\n 'E': ['M_E', PHP.ORDER_ATOMIC],\n 'GOLDEN_RATIO': ['(1 + sqrt(5)) / 2', PHP.ORDER_DIVISION],\n 'SQRT2': ['M_SQRT2', PHP.ORDER_ATOMIC],\n 'SQRT1_2': ['M_SQRT1_2', PHP.ORDER_ATOMIC],\n 'INFINITY': ['INF', PHP.ORDER_ATOMIC],\n };\n return CONSTANTS[block.getFieldValue('CONSTANT')];\n};\n\nPHP['math_number_property'] = function(block) {\n // Check if a number is even, odd, prime, whole, positive, or negative\n // or if it is divisible by certain number. Returns true or false.\n const PROPERTIES = {\n 'EVEN': ['', ' % 2 == 0', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY],\n 'ODD': ['', ' % 2 == 1', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY],\n 'WHOLE': ['is_int(', ')', PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL],\n 'POSITIVE': ['', ' > 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL],\n 'NEGATIVE': ['', ' < 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL],\n 'DIVISIBLE_BY': [null, null, PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY],\n 'PRIME': [null, null, PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL],\n };\n const dropdownProperty = block.getFieldValue('PROPERTY');\n const [prefix, suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty];\n const numberToCheck = PHP.valueToCode(block, 'NUMBER_TO_CHECK',\n inputOrder) || '0';\n let code;\n if (dropdownProperty === 'PRIME') {\n // Prime is a special case as it is not a one-liner test.\n const functionName = PHP.provideFunction_('math_isPrime', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if ($n == 2 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n`);\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor = PHP.valueToCode(block, 'DIVISOR',\n PHP.ORDER_MODULUS) || '0';\n if (divisor === '0') {\n return ['false', PHP.ORDER_ATOMIC];\n\n }\n code = numberToCheck + ' % ' + divisor + ' == 0';\n } else {\n code = prefix + numberToCheck + suffix;\n }\n return [code, outputOrder];\n};\n\nPHP['math_change'] = function(block) {\n // Add to a variable in place.\n const argument0 = PHP.valueToCode(block, 'DELTA', PHP.ORDER_ADDITION) || '0';\n const varName =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' += ' + argument0 + ';\\n';\n};\n\n// Rounding functions have a single operand.\nPHP['math_round'] = PHP['math_single'];\n// Trigonometry functions have a single operand.\nPHP['math_trig'] = PHP['math_single'];\n\nPHP['math_on_list'] = function(block) {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n let list;\n let code;\n switch (func) {\n case 'SUM':\n list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()';\n code = 'array_sum(' + list + ')';\n break;\n case 'MIN':\n list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()';\n code = 'min(' + list + ')';\n break;\n case 'MAX':\n list =\n PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()';\n code = 'max(' + list + ')';\n break;\n case 'AVERAGE': {\n const functionName = PHP.provideFunction_('math_mean', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($myList) {\n return array_sum($myList) / count($myList);\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n const functionName = PHP.provideFunction_('math_median', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MODE': {\n // As a list of numbers can contain more than one mode,\n // the returned result is provided as an array.\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].\n const functionName = PHP.provideFunction_('math_modes', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n const functionName = PHP.provideFunction_('math_standard_deviation', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM': {\n const functionName = PHP.provideFunction_('math_random_list', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n`);\n list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_modulo'] = function(block) {\n // Remainder computation.\n const argument0 =\n PHP.valueToCode(block, 'DIVIDEND', PHP.ORDER_MODULUS) || '0';\n const argument1 = PHP.valueToCode(block, 'DIVISOR', PHP.ORDER_MODULUS) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, PHP.ORDER_MODULUS];\n};\n\nPHP['math_constrain'] = function(block) {\n // Constrain a number between two limits.\n const argument0 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || '0';\n const argument1 = PHP.valueToCode(block, 'LOW', PHP.ORDER_NONE) || '0';\n const argument2 =\n PHP.valueToCode(block, 'HIGH', PHP.ORDER_NONE) || 'Infinity';\n const code =\n 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_random_int'] = function(block) {\n // Random integer between [X] and [Y].\n const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || '0';\n const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || '0';\n const functionName = PHP.provideFunction_('math_random_int', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n`);\n const code = functionName + '(' + argument0 + ', ' + argument1 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_random_float'] = function(block) {\n // Random fraction between 0 and 1.\n return ['(float)rand()/(float)getrandmax()', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['math_atan2'] = function(block) {\n // Arctangent of point (X, Y) in degrees from -180 to 180.\n const argument0 = PHP.valueToCode(block, 'X', PHP.ORDER_NONE) || '0';\n const argument1 = PHP.valueToCode(block, 'Y', PHP.ORDER_NONE) || '0';\n return [\n 'atan2(' + argument1 + ', ' + argument0 + ') / pi() * 180',\n PHP.ORDER_DIVISION\n ];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for procedure blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.procedures');\n\nconst Variables = goog.require('Blockly.Variables');\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['procedures_defreturn'] = function(block) {\n // Define a procedure with a return value.\n // First, add a 'global' statement for every variable that is not shadowed by\n // a local parameter.\n const globals = [];\n const workspace = block.workspace;\n const usedVariables = Variables.allUsedVarModels(workspace) || [];\n for (let i = 0, variable; variable = usedVariables[i]; i++) {\n const varName = variable.name;\n if (block.getVars().indexOf(varName) === -1) {\n globals.push(PHP.nameDB_.getName(varName, NameType.VARIABLE));\n }\n }\n // Add developer variables.\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n globals.push(\n PHP.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE));\n }\n const globalStr =\n globals.length ? PHP.INDENT + 'global ' + globals.join(', ') + ';\\n' : '';\n\n const funcName =\n PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE);\n let xfix1 = '';\n if (PHP.STATEMENT_PREFIX) {\n xfix1 += PHP.injectId(PHP.STATEMENT_PREFIX, block);\n }\n if (PHP.STATEMENT_SUFFIX) {\n xfix1 += PHP.injectId(PHP.STATEMENT_SUFFIX, block);\n }\n if (xfix1) {\n xfix1 = PHP.prefixLines(xfix1, PHP.INDENT);\n }\n let loopTrap = '';\n if (PHP.INFINITE_LOOP_TRAP) {\n loopTrap = PHP.prefixLines(\n PHP.injectId(PHP.INFINITE_LOOP_TRAP, block), PHP.INDENT);\n }\n const branch = PHP.statementToCode(block, 'STACK');\n let returnValue = PHP.valueToCode(block, 'RETURN', PHP.ORDER_NONE) || '';\n let xfix2 = '';\n if (branch && returnValue) {\n // After executing the function body, revisit this block for the return.\n xfix2 = xfix1;\n }\n if (returnValue) {\n returnValue = PHP.INDENT + 'return ' + returnValue + ';\\n';\n }\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = PHP.nameDB_.getName(variables[i], NameType.VARIABLE);\n }\n let code = 'function ' + funcName + '(' + args.join(', ') + ') {\\n' +\n globalStr + xfix1 + loopTrap + branch + xfix2 + returnValue + '}';\n code = PHP.scrub_(block, code);\n // Add % so as not to collide with helper functions in definitions list.\n PHP.definitions_['%' + funcName] = code;\n return null;\n};\n\n// Defining a procedure without a return value uses the same generator as\n// a procedure with a return value.\nPHP['procedures_defnoreturn'] = PHP['procedures_defreturn'];\n\nPHP['procedures_callreturn'] = function(block) {\n // Call a procedure with a return value.\n const funcName =\n PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE);\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = PHP.valueToCode(block, 'ARG' + i, PHP.ORDER_NONE) || 'null';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['procedures_callnoreturn'] = function(block) {\n // Call a procedure with no return value.\n // Generated code is for a function call as a statement is the same as a\n // function call as a value, with the addition of line ending.\n const tuple = PHP['procedures_callreturn'](block);\n return tuple[0] + ';\\n';\n};\n\nPHP['procedures_ifreturn'] = function(block) {\n // Conditionally return value from a procedure.\n const condition =\n PHP.valueToCode(block, 'CONDITION', PHP.ORDER_NONE) || 'false';\n let code = 'if (' + condition + ') {\\n';\n if (PHP.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the return is triggered.\n code +=\n PHP.prefixLines(PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT);\n }\n if (block.hasReturnValue_) {\n const value = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'null';\n code += PHP.INDENT + 'return ' + value + ';\\n';\n } else {\n code += PHP.INDENT + 'return;\\n';\n }\n code += '}\\n';\n return code;\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for text blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.texts');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['text'] = function(block) {\n // Text value.\n const code = PHP.quote_(block.getFieldValue('TEXT'));\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['text_multiline'] = function(block) {\n // Text value.\n const code = PHP.multiline_quote_(block.getFieldValue('TEXT'));\n const order =\n code.indexOf('.') !== -1 ? PHP.ORDER_STRING_CONCAT : PHP.ORDER_ATOMIC;\n return [code, order];\n};\n\nPHP['text_join'] = function(block) {\n // Create a string made up of any number of elements of any type.\n if (block.itemCount_ === 0) {\n return [\"''\", PHP.ORDER_ATOMIC];\n } else if (block.itemCount_ === 1) {\n const element = PHP.valueToCode(block, 'ADD0', PHP.ORDER_NONE) || \"''\";\n const code = element;\n return [code, PHP.ORDER_NONE];\n } else if (block.itemCount_ === 2) {\n const element0 =\n PHP.valueToCode(block, 'ADD0', PHP.ORDER_STRING_CONCAT) || \"''\";\n const element1 =\n PHP.valueToCode(block, 'ADD1', PHP.ORDER_STRING_CONCAT) || \"''\";\n const code = element0 + ' . ' + element1;\n return [code, PHP.ORDER_STRING_CONCAT];\n } else {\n const elements = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n elements[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || \"''\";\n }\n const code = 'implode(\\'\\', array(' + elements.join(',') + '))';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n};\n\nPHP['text_append'] = function(block) {\n // Append to a variable in place.\n const varName =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const value = PHP.valueToCode(block, 'TEXT', PHP.ORDER_ASSIGNMENT) || \"''\";\n return varName + ' .= ' + value + ';\\n';\n};\n\nPHP['text_length'] = function(block) {\n // String or array length.\n const functionName = PHP.provideFunction_('length', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) {\n if (is_string($value)) {\n return strlen($value);\n }\n return count($value);\n}\n`);\n const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n return [functionName + '(' + text + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n return ['empty(' + text + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_indexOf'] = function(block) {\n // Search the text for a substring.\n const operator =\n block.getFieldValue('END') === 'FIRST' ? 'strpos' : 'strrpos';\n const substring = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || \"''\";\n const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || \"''\";\n let errorIndex = ' -1';\n let indexAdjustment = '';\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n indexAdjustment = ' + 1';\n }\n const functionName = PHP.provideFunction_(\n block.getFieldValue('END') === 'FIRST' ? 'text_indexOf' :\n 'text_lastIndexOf',\n `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $search) {\n $pos = ${operator}($text, $search);\n return $pos === false ? ${errorIndex} : $pos${indexAdjustment};\n}\n`);\n const code = functionName + '(' + text + ', ' + substring + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_charAt'] = function(block) {\n // Get letter at index.\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const textOrder = (where === 'RANDOM') ? PHP.ORDER_NONE : PHP.ORDER_NONE;\n const text = PHP.valueToCode(block, 'VALUE', textOrder) || \"''\";\n switch (where) {\n case 'FIRST': {\n const code = 'substr(' + text + ', 0, 1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'LAST': {\n const code = 'substr(' + text + ', -1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'FROM_START': {\n const at = PHP.getAdjusted(block, 'AT');\n const code = 'substr(' + text + ', ' + at + ', 1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'FROM_END': {\n const at = PHP.getAdjusted(block, 'AT', 1, true);\n const code = 'substr(' + text + ', ' + at + ', 1)';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n case 'RANDOM': {\n const functionName = PHP.provideFunction_('text_random_letter', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text) {\n return $text[rand(0, strlen($text) - 1)];\n}\n`);\n const code = functionName + '(' + text + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n }\n throw Error('Unhandled option (text_charAt).');\n};\n\nPHP['text_getSubstring'] = function(block) {\n // Get substring.\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const text = PHP.valueToCode(block, 'STRING', PHP.ORDER_NONE) || \"''\";\n if (where1 === 'FIRST' && where2 === 'LAST') {\n const code = text;\n return [code, PHP.ORDER_NONE];\n } else {\n const at1 = PHP.getAdjusted(block, 'AT1');\n const at2 = PHP.getAdjusted(block, 'AT2');\n const functionName = PHP.provideFunction_('text_get_substring', `\nfunction ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = strlen($text) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = strlen($text) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = strlen($text) - $at1;\n } else {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n return substr($text, $at1, $length);\n}\n`);\n const code = functionName + '(' + text + ', \\'' + where1 + '\\', ' + at1 +\n ', \\'' + where2 + '\\', ' + at2 + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n }\n};\n\nPHP['text_changeCase'] = function(block) {\n // Change capitalization.\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n let code;\n if (block.getFieldValue('CASE') === 'UPPERCASE') {\n code = 'strtoupper(' + text + ')';\n } else if (block.getFieldValue('CASE') === 'LOWERCASE') {\n code = 'strtolower(' + text + ')';\n } else if (block.getFieldValue('CASE') === 'TITLECASE') {\n code = 'ucwords(strtolower(' + text + '))';\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_trim'] = function(block) {\n // Trim spaces.\n const OPERATORS = {'LEFT': 'ltrim', 'RIGHT': 'rtrim', 'BOTH': 'trim'};\n const operator = OPERATORS[block.getFieldValue('MODE')];\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n return [operator + '(' + text + ')', PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_print'] = function(block) {\n // Print statement.\n const msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n return 'print(' + msg + ');\\n';\n};\n\nPHP['text_prompt_ext'] = function(block) {\n // Prompt function.\n let msg;\n if (block.getField('TEXT')) {\n // Internal message.\n msg = PHP.quote_(block.getFieldValue('TEXT'));\n } else {\n // External message.\n msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n }\n let code = 'readline(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'floatval(' + code + ')';\n }\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_prompt'] = PHP['text_prompt_ext'];\n\nPHP['text_count'] = function(block) {\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n const sub = PHP.valueToCode(block, 'SUB', PHP.ORDER_NONE) || \"''\";\n const code = 'strlen(' + sub + ') === 0' +\n ' ? strlen(' + text + ') + 1' +\n ' : substr_count(' + text + ', ' + sub + ')';\n return [code, PHP.ORDER_CONDITIONAL];\n};\n\nPHP['text_replace'] = function(block) {\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n const from = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || \"''\";\n const to = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || \"''\";\n const code = 'str_replace(' + from + ', ' + to + ', ' + text + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n\nPHP['text_reverse'] = function(block) {\n const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || \"''\";\n const code = 'strrev(' + text + ')';\n return [code, PHP.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.variables');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n\n\nPHP['variables_get'] = function(block) {\n // Variable getter.\n const code =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return [code, PHP.ORDER_ATOMIC];\n};\n\nPHP['variables_set'] = function(block) {\n // Variable setter.\n const argument0 =\n PHP.valueToCode(block, 'VALUE', PHP.ORDER_ASSIGNMENT) || '0';\n const varName =\n PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' = ' + argument0 + ';\\n';\n};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating PHP for dynamic variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.PHP.variablesDynamic');\n\nconst {phpGenerator: PHP} = goog.require('Blockly.PHP');\n/** @suppress {extraRequire} */\ngoog.require('Blockly.PHP.variables');\n\n\n// PHP is dynamically typed.\nPHP['variables_get_dynamic'] = PHP['variables_get'];\nPHP['variables_set_dynamic'] = PHP['variables_set'];\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Complete helper functions for generating PHP for\n * blocks. This is the entrypoint for php_compressed.js.\n * @suppress {extraRequire}\n */\n'use strict';\n\ngoog.module('Blockly.PHP.all');\n\nconst moduleExports = goog.require('Blockly.PHP');\ngoog.require('Blockly.PHP.colour');\ngoog.require('Blockly.PHP.lists');\ngoog.require('Blockly.PHP.logic');\ngoog.require('Blockly.PHP.loops');\ngoog.require('Blockly.PHP.math');\ngoog.require('Blockly.PHP.procedures');\ngoog.require('Blockly.PHP.texts');\ngoog.require('Blockly.PHP.variables');\ngoog.require('Blockly.PHP.variablesDynamic');\n\nexports = moduleExports;\n"]}
|