From 08f4022b38394f2dea02b09de0d40f43decb6b7e Mon Sep 17 00:00:00 2001 From: "ellen.spertus" Date: Sat, 11 Jan 2014 03:00:02 -0800 Subject: [PATCH] Automatic commit Sat Jan 11 03:00:02 PST 2014 --- appengine/app.yaml | 6 + blockly_compressed.js | 51 +- blockly_uncompressed.js | 1724 +++++++++++------------ blocks/math.js | 20 +- blocks/variables.js | 12 +- blocks_compressed.js | 172 +-- core/block.js | 107 +- core/blocks.js | 148 +- core/comment.js | 20 +- core/generator.js | 38 + core/icon.js | 4 +- core/mutator.js | 28 + core/xml.js | 8 +- generators/javascript.js | 3 + generators/javascript/colour.js | 97 +- generators/javascript/lists.js | 132 +- generators/javascript/math.js | 268 ++-- generators/javascript/text.js | 97 +- generators/python.js | 38 - generators/python/colour.js | 2 +- generators/python/math.js | 4 +- javascript_compressed.js | 139 +- msg/js/cs.js | 70 +- msg/js/el.js | 6 +- msg/js/en.js | 2 +- msg/js/es.js | 6 +- msg/js/fa.js | 8 +- msg/js/fi.js | 26 +- msg/js/he.js | 12 +- msg/js/ja.js | 10 +- msg/js/ms.js | 134 +- msg/js/pms.js | 118 +- msg/js/pt.js | 26 +- msg/js/sq.js | 30 +- msg/js/sv.js | 58 +- msg/js/th.js | 58 +- msg/js/tl.js | 30 +- msg/js/vi.js | 6 +- msg/json/en.json | 2 +- msg/json/qqq.json | 8 +- python_compressed.js | 87 +- tests/generators/unittest_javascript.js | 187 +-- tests/generators/unittest_python.js | 2 +- 43 files changed, 2067 insertions(+), 1937 deletions(-) diff --git a/appengine/app.yaml b/appengine/app.yaml index 92b054115..38b041c68 100644 --- a/appengine/app.yaml +++ b/appengine/app.yaml @@ -98,6 +98,12 @@ handlers: upload: favicon\.ico secure: always +# Apple icon. +- url: /apple-touch-icon\.png + static_files: apple-touch-icon.png + upload: apple-touch-icon\.png + secure: always + # robot.txt - url: /robots\.txt static_files: robots.txt diff --git a/blockly_compressed.js b/blockly_compressed.js index 14efa37ad..a7061e041 100644 --- a/blockly_compressed.js +++ b/blockly_compressed.js @@ -57,17 +57,17 @@ goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:go goog.userAgent.determineVersion_=function(){var a="",b;goog.userAgent.OPERA&&goog.global.opera?(a=goog.global.opera.version,a="function"==typeof a?a():a):(goog.userAgent.GECKO?b=/rv\:([^\);]+)(\)|;)/:goog.userAgent.IE?b=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/:goog.userAgent.WEBKIT&&(b=/WebKit\/(\S+)/),b&&(a=(a=b.exec(goog.userAgent.getUserAgentString()))?a[1]:""));return goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),b>parseFloat(a))?String(b):a}; goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={}; goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.userAgent.isVersionOrHigherCache_[a]||(goog.userAgent.isVersionOrHigherCache_[a]=0<=goog.string.compareVersions(goog.userAgent.VERSION,a))};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;goog.userAgent.isDocumentModeOrHigher=function(a){return goog.userAgent.IE&&goog.userAgent.DOCUMENT_MODE>=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher; -goog.userAgent.DOCUMENT_MODE=function(){var a=goog.global.document;return a&&goog.userAgent.IE?goog.userAgent.getDocumentMode_()||("CSS1Compat"==a.compatMode?parseInt(goog.userAgent.VERSION,10):5):void 0}();goog.disposable={};goog.disposable.IDisposable=function(){};goog.Disposable=function(){goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF&&(goog.Disposable.INCLUDE_STACK_ON_CREATION&&(this.creationStack=Error().stack),goog.Disposable.instances_[goog.getUid(this)]=this)};goog.Disposable.MonitoringMode={OFF:0,PERMANENT:1,INTERACTIVE:2};goog.Disposable.MONITORING_MODE=0;goog.Disposable.INCLUDE_STACK_ON_CREATION=!0;goog.Disposable.instances_={}; -goog.Disposable.getUndisposedObjects=function(){var a=[],b;for(b in goog.Disposable.instances_)goog.Disposable.instances_.hasOwnProperty(b)&&a.push(goog.Disposable.instances_[Number(b)]);return a};goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}};goog.Disposable.prototype.disposed_=!1;goog.Disposable.prototype.isDisposed=function(){return this.disposed_};goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed; -goog.Disposable.prototype.dispose=function(){if(!this.disposed_&&(this.disposed_=!0,this.disposeInternal(),goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF)){var a=goog.getUid(this);if(goog.Disposable.MONITORING_MODE==goog.Disposable.MonitoringMode.PERMANENT&&!goog.Disposable.instances_.hasOwnProperty(a))throw Error(this+" did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");delete goog.Disposable.instances_[a]}}; -goog.Disposable.prototype.registerDisposable=function(a){this.addOnDisposeCallback(goog.partial(goog.dispose,a))};goog.Disposable.prototype.addOnDisposeCallback=function(a,b){this.onDisposeCallbacks_||(this.onDisposeCallbacks_=[]);this.onDisposeCallbacks_.push(goog.bind(a,b))};goog.Disposable.prototype.disposeInternal=function(){if(this.onDisposeCallbacks_)for(;this.onDisposeCallbacks_.length;)this.onDisposeCallbacks_.shift()()}; -goog.Disposable.isDisposed=function(a){return a&&"function"==typeof a.isDisposed?a.isDisposed():!1};goog.dispose=function(a){a&&"function"==typeof a.dispose&&a.dispose()};goog.disposeAll=function(a){for(var b=0,c=arguments.length;bc?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;cc&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1}; goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(a,b,c){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;fa.colour,"details.colour must be a number from 0 to 360 (exclusive)");"undefined"!=a.output&&(goog.asserts.assert(!a.previousStatement,"When details.output is defined, details.previousStatement must not be true."),goog.asserts.assert(!a.nextStatement, +"When details.output is defined, details.nextStatement must not be true."));var b={init:function(){var b=this;this.setColour(a.colour);this.setHelpUrl(a.helpUrl);"string"==typeof a.tooltip?this.setTooltip(a.tooltip):"function"==typeof a.tooltip&&this.setTooltip(function(){return a.tooltip(b)});"undefined"!=a.output?this.setOutput(!0,a.output):(this.setPreviousStatement("undefined"==typeof a.previousStatement?!0:a.previousStatement),this.setNextStatement("undefined"==typeof a.nextStatement?!0:a.nextStatement)); +var d=[];d.push(a.text);a.args&&a.args.forEach(function(a){goog.asserts.assert(a.name);goog.asserts.assert("undefined"!=a.check);"undefined"==a.type||a.type==Blockly.INPUT_VALUE?d.push([a.name,a.check,"undefined"==typeof a.align?Blockly.ALIGN_RIGHT:a.align]):goog.asserts.fail("addTemplate() can only handle value inputs.")});interpAgs.push(Blockly.ALIGN_RIGHT);a.inline&&this.setInlineInputs(a.inline);Blockly.Block.prototype.interpolateMsg.apply(this,d)}};b.mutationToDom=a.switchable?function(){var b= +a.mutationToDomFunc?a.mutatationToDomFunc():document.createElement("mutation");b.setAttribute("is_statement",this.isStatement||!1);return b}:a.mutationToDomFunc;Blockly.Blocks[a.blockName]=b};Blockly.ScrollbarPair=function(a){this.workspace_=a;this.oldHostMetrics_=null;this.hScroll=new Blockly.Scrollbar(a,!0,!0);this.vScroll=new Blockly.Scrollbar(a,!1,!0);this.corner_=Blockly.createSvgElement("rect",{height:Blockly.Scrollbar.scrollbarThickness,width:Blockly.Scrollbar.scrollbarThickness,style:"fill: #fff"},null);Blockly.Scrollbar.insertAfter_(this.corner_,a.getBubbleCanvas())}; Blockly.ScrollbarPair.prototype.dispose=function(){Blockly.unbindEvent_(this.onResizeWrapper_);this.onResizeWrapper_=null;goog.dom.removeNode(this.corner_);this.oldHostMetrics_=this.workspace_=this.corner_=null;this.hScroll.dispose();this.hScroll=null;this.vScroll.dispose();this.vScroll=null}; Blockly.ScrollbarPair.prototype.resize=function(){var a=this.workspace_.getMetrics();if(a){var b=!1,c=!1;this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth==a.viewWidth&&this.oldHostMetrics_.viewHeight==a.viewHeight&&this.oldHostMetrics_.absoluteTop==a.absoluteTop&&this.oldHostMetrics_.absoluteLeft==a.absoluteLeft?(this.oldHostMetrics_&&this.oldHostMetrics_.contentWidth==a.contentWidth&&this.oldHostMetrics_.viewLeft==a.viewLeft&&this.oldHostMetrics_.contentLeft==a.contentLeft||(b=!0),this.oldHostMetrics_&& this.oldHostMetrics_.contentHeight==a.contentHeight&&this.oldHostMetrics_.viewTop==a.viewTop&&this.oldHostMetrics_.contentTop==a.contentTop||(c=!0)):c=b=!0;b&&this.hScroll.resize(a);c&&this.vScroll.resize(a);this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth==a.viewWidth&&this.oldHostMetrics_.absoluteLeft==a.absoluteLeft||this.corner_.setAttribute("x",this.vScroll.xCoordinate);this.oldHostMetrics_&&this.oldHostMetrics_.viewHeight==a.viewHeight&&this.oldHostMetrics_.absoluteTop==a.absoluteTop||this.corner_.setAttribute("y", @@ -704,11 +708,11 @@ d.height),c.setAttribute("w",d.width),b.appendChild(c));d=!1;for(e=0;c=a.inputLi Blockly.Xml.domToPrettyText=function(a){a=Blockly.Xml.domToText(a).split("<");for(var b="",c=1;c"!=d.slice(-2)&&(b+=" ")}a=a.join("\n");a=a.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1");return a.replace(/^\n/,"")}; Blockly.Xml.textToDom=function(a){a=(new DOMParser).parseFromString(a,"text/xml");if(!a||!a.firstChild||"xml"!=a.firstChild.nodeName.toLowerCase()||a.firstChild!==a.lastChild)throw"Blockly.Xml.textToDom did not obtain a valid XML tree.";return a.firstChild}; Blockly.Xml.domToWorkspace=function(a,b){for(var c=Blockly.svgSize().width,d=0,e;e=b.childNodes[d];d++)if("block"==e.nodeName.toLowerCase()){var f=Blockly.Xml.domToBlock_(a,e),g=parseInt(e.getAttribute("x"),10);e=parseInt(e.getAttribute("y"),10);isNaN(g)||isNaN(e)||f.moveBy(Blockly.RTL?c-g:g,e)}}; -Blockly.Xml.domToBlock_=function(a,b){var c=b.getAttribute("type");if(!c)throw"Block type unspecified: \n"+b.outerHTML;var d=new Blockly.Block(a,c);d.initSvg();var e=b.getAttribute("inline");e&&d.setInputsInline("true"==e);(e=b.getAttribute("collapsed"))&&d.setCollapsed("true"==e);(e=b.getAttribute("disabled"))&&d.setDisabled("true"==e);(e=b.getAttribute("deletable"))&&d.setDeletable("true"==e);(e=b.getAttribute("movable"))&&d.setMovable("true"==e);(e=b.getAttribute("editable"))&&d.setEditable("true"== -e);for(var f=null,e=0,g;g=b.childNodes[e];e++)if(3!=g.nodeType||!g.data.match(/^\s*$/)){for(var f=null,h=0,k;k=g.childNodes[h];h++)3==k.nodeType&&k.data.match(/^\s*$/)||(f=k);h=g.getAttribute("name");switch(g.nodeName.toLowerCase()){case "mutation":d.domToMutation&&d.domToMutation(g);break;case "comment":d.setCommentText(g.textContent);(f=g.getAttribute("pinned"))&&d.comment.setVisible("true"==f);f=parseInt(g.getAttribute("w"),10);g=parseInt(g.getAttribute("h"),10);isNaN(f)||isNaN(g)||d.comment.setBubbleSize(f, -g);break;case "title":case "field":d.setFieldValue(g.textContent,h);break;case "value":case "statement":g=d.getInput(h);if(!g)throw"Input "+h+" does not exist in block "+c;if(f&&"block"==f.nodeName.toLowerCase())if(f=Blockly.Xml.domToBlock_(a,f),f.outputConnection)g.connection.connect(f.outputConnection);else if(f.previousConnection)g.connection.connect(f.previousConnection);else throw"Child block does not have output or previous statement.";break;case "next":if(f&&"block"==f.nodeName.toLowerCase()){if(!d.nextConnection)throw"Next statement does not exist."; -if(d.nextConnection.targetConnection)throw"Next statement is already connected.";f=Blockly.Xml.domToBlock_(a,f);if(!f.previousConnection)throw"Next block does not have previous statement.";d.nextConnection.connect(f.previousConnection)}}}(c=d.nextConnection&&d.nextConnection.targetBlock())?c.render():d.render();return d};Blockly.Xml.deleteNext=function(a){for(var b=0,c;c=a.childNodes[b];b++)if("next"==c.nodeName.toLowerCase()){a.removeChild(c);break}};Blockly.Xml=Blockly.Xml; -Blockly.Xml.domToText=Blockly.Xml.domToText;Blockly.Xml.domToWorkspace=Blockly.Xml.domToWorkspace;Blockly.Xml.textToDom=Blockly.Xml.textToDom;Blockly.Xml.workspaceToDom=Blockly.Xml.workspaceToDom;Blockly.Workspace=function(a,b){this.getMetrics=a;this.setMetrics=b;this.isFlyout=!1;this.topBlocks_=[];this.maxBlocks=Infinity;Blockly.ConnectionDB.init(this)};Blockly.Workspace.SCAN_ANGLE=3;Blockly.Workspace.prototype.dragMode=!1;Blockly.Workspace.prototype.scrollX=0;Blockly.Workspace.prototype.scrollY=0;Blockly.Workspace.prototype.trashcan=null;Blockly.Workspace.prototype.fireChangeEventPid_=null;Blockly.Workspace.prototype.scrollbar=null; +Blockly.Xml.domToBlock_=function(a,b){var c=b.getAttribute("type");if(!c)throw"Block type unspecified: \n"+b.outerHTML;var d=new Blockly.Block(a,c);d.initSvg();var e=b.getAttribute("inline");e&&d.setInputsInline("true"==e);(e=b.getAttribute("disabled"))&&d.setDisabled("true"==e);(e=b.getAttribute("deletable"))&&d.setDeletable("true"==e);(e=b.getAttribute("movable"))&&d.setMovable("true"==e);(e=b.getAttribute("editable"))&&d.setEditable("true"==e);for(var f=null,e=0,g;g=b.childNodes[e];e++)if(3!=g.nodeType|| +!g.data.match(/^\s*$/)){for(var f=null,h=0,k;k=g.childNodes[h];h++)3==k.nodeType&&k.data.match(/^\s*$/)||(f=k);h=g.getAttribute("name");switch(g.nodeName.toLowerCase()){case "mutation":d.domToMutation&&d.domToMutation(g);break;case "comment":d.setCommentText(g.textContent);(f=g.getAttribute("pinned"))&&d.comment.setVisible("true"==f);f=parseInt(g.getAttribute("w"),10);g=parseInt(g.getAttribute("h"),10);isNaN(f)||isNaN(g)||d.comment.setBubbleSize(f,g);break;case "title":case "field":d.setFieldValue(g.textContent, +h);break;case "value":case "statement":g=d.getInput(h);if(!g)throw"Input "+h+" does not exist in block "+c;if(f&&"block"==f.nodeName.toLowerCase())if(f=Blockly.Xml.domToBlock_(a,f),f.outputConnection)g.connection.connect(f.outputConnection);else if(f.previousConnection)g.connection.connect(f.previousConnection);else throw"Child block does not have output or previous statement.";break;case "next":if(f&&"block"==f.nodeName.toLowerCase()){if(!d.nextConnection)throw"Next statement does not exist.";if(d.nextConnection.targetConnection)throw"Next statement is already connected."; +f=Blockly.Xml.domToBlock_(a,f);if(!f.previousConnection)throw"Next block does not have previous statement.";d.nextConnection.connect(f.previousConnection)}}}(c=d.nextConnection&&d.nextConnection.targetBlock())?c.render():d.render();(c=b.getAttribute("collapsed"))&&d.setCollapsed("true"==c);return d};Blockly.Xml.deleteNext=function(a){for(var b=0,c;c=a.childNodes[b];b++)if("next"==c.nodeName.toLowerCase()){a.removeChild(c);break}};Blockly.Xml=Blockly.Xml;Blockly.Xml.domToText=Blockly.Xml.domToText; +Blockly.Xml.domToWorkspace=Blockly.Xml.domToWorkspace;Blockly.Xml.textToDom=Blockly.Xml.textToDom;Blockly.Xml.workspaceToDom=Blockly.Xml.workspaceToDom;Blockly.Workspace=function(a,b){this.getMetrics=a;this.setMetrics=b;this.isFlyout=!1;this.topBlocks_=[];this.maxBlocks=Infinity;Blockly.ConnectionDB.init(this)};Blockly.Workspace.SCAN_ANGLE=3;Blockly.Workspace.prototype.dragMode=!1;Blockly.Workspace.prototype.scrollX=0;Blockly.Workspace.prototype.scrollY=0;Blockly.Workspace.prototype.trashcan=null;Blockly.Workspace.prototype.fireChangeEventPid_=null;Blockly.Workspace.prototype.scrollbar=null; Blockly.Workspace.prototype.createDom=function(){this.svgGroup_=Blockly.createSvgElement("g",{},null);this.svgBlockCanvas_=Blockly.createSvgElement("g",{},this.svgGroup_);this.svgBubbleCanvas_=Blockly.createSvgElement("g",{},this.svgGroup_);this.fireChangeEvent();return this.svgGroup_}; Blockly.Workspace.prototype.dispose=function(){this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.svgBubbleCanvas_=this.svgBlockCanvas_=null;this.trashcan&&(this.trashcan.dispose(),this.trashcan=null)};Blockly.Workspace.prototype.addTrashcan=function(){if(Blockly.hasTrashcan&&!Blockly.readOnly){this.trashcan=new Blockly.Trashcan(this);var a=this.trashcan.createDom();this.svgGroup_.insertBefore(a,this.svgBlockCanvas_);this.trashcan.init()}}; Blockly.Workspace.prototype.getCanvas=function(){return this.svgBlockCanvas_};Blockly.Workspace.prototype.getBubbleCanvas=function(){return this.svgBubbleCanvas_};Blockly.Workspace.prototype.addTopBlock=function(a){this.topBlocks_.push(a);this.fireChangeEvent()};Blockly.Workspace.prototype.removeTopBlock=function(a){for(var b=!1,c,d=0;c=this.topBlocks_[d];d++)if(c==a){this.topBlocks_.splice(d,1);b=!0;break}if(!b)throw"Block not present in workspace's list of top-most blocks.";this.fireChangeEvent()}; @@ -735,13 +739,14 @@ Blockly.Bubble.prototype.setBubbleSize=function(a,b){var c=2*Blockly.Bubble.BORD Blockly.Bubble.prototype.renderArrow_=function(){var a=[],b=this.width_/2,c=this.height_/2,d=-this.relativeLeft_,e=-this.relativeTop_;if(b==d&&c==e)a.push("M "+b+","+c);else{e-=c;d-=b;Blockly.RTL&&(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0>e&&(g=2*Math.PI-g);var h=g+Math.PI/2;h>2*Math.PI&&(h-=2*Math.PI);var k=Math.sin(h),l=Math.cos(h),q=this.getBubbleSize(),h=(q.width+q.height)/Blockly.Bubble.ARROW_THICKNESS,h=Math.min(h,q.width,q.height)/2,q=1-Blockly.Bubble.ANCHOR_RADIUS/f,d=b+q*d,e=c+ q*e,q=b+h*l,m=c+h*k,b=b-h*l,c=c-h*k,k=g+this.arrow_radians_;k>2*Math.PI&&(k-=2*Math.PI);g=Math.sin(k)*f/Blockly.Bubble.ARROW_BEND;f=Math.cos(k)*f/Blockly.Bubble.ARROW_BEND;a.push("M"+q+","+m);a.push("C"+(q+f)+","+(m+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");this.bubbleArrow_.setAttribute("d",a.join(" "))};Blockly.Bubble.prototype.setColour=function(a){this.bubbleBack_.setAttribute("fill",a);this.bubbleArrow_.setAttribute("fill",a)}; Blockly.Bubble.prototype.dispose=function(){Blockly.Bubble.unbindDragEvents_();goog.dom.removeNode(this.bubbleGroup_);this.shape_=this.content_=this.workspace_=this.bubbleGroup_=null};Blockly.Icon=function(a){this.block_=a};Blockly.Icon.RADIUS=8;Blockly.Icon.prototype.bubble_=null;Blockly.Icon.prototype.iconX_=0;Blockly.Icon.prototype.iconY_=0;Blockly.Icon.prototype.createIcon_=function(){this.iconGroup_=Blockly.createSvgElement("g",{},null);this.block_.getSvgRoot().appendChild(this.iconGroup_);Blockly.bindEvent_(this.iconGroup_,"mouseup",this,this.iconClick_);this.updateEditable()}; -Blockly.Icon.prototype.dispose=function(){goog.dom.removeNode(this.iconGroup_);this.iconGroup_=null;this.setVisible(!1);this.block_=null};Blockly.Icon.prototype.updateEditable=function(){this.block_.isEditable()&&!this.block_.isInFlyout?Blockly.addClass_(this.iconGroup_,"blocklyIconGroup"):Blockly.removeClass_(this.iconGroup_,"blocklyIconGroup")};Blockly.Icon.prototype.isVisible=function(){return!!this.bubble_}; -Blockly.Icon.prototype.iconClick_=function(a){this.block_.isEditable()&&!this.block_.isInFlyout&&this.setVisible(!this.isVisible())};Blockly.Icon.prototype.updateColour=function(){if(this.isVisible()){var a=Blockly.makeColour(this.block_.getColour());this.bubble_.setColour(a)}}; +Blockly.Icon.prototype.dispose=function(){goog.dom.removeNode(this.iconGroup_);this.iconGroup_=null;this.setVisible(!1);this.block_=null};Blockly.Icon.prototype.updateEditable=function(){this.block_.isInFlyout?Blockly.removeClass_(this.iconGroup_,"blocklyIconGroup"):Blockly.addClass_(this.iconGroup_,"blocklyIconGroup")};Blockly.Icon.prototype.isVisible=function(){return!!this.bubble_};Blockly.Icon.prototype.iconClick_=function(a){this.block_.isInFlyout||this.setVisible(!this.isVisible())}; +Blockly.Icon.prototype.updateColour=function(){if(this.isVisible()){var a=Blockly.makeColour(this.block_.getColour());this.bubble_.setColour(a)}}; Blockly.Icon.prototype.renderIcon=function(a){if(this.block_.isCollapsed())return this.iconGroup_.setAttribute("display","none"),a;this.iconGroup_.setAttribute("display","block");var b=2*Blockly.Icon.RADIUS;Blockly.RTL&&(a-=b);this.iconGroup_.setAttribute("transform","translate("+a+", 5)");this.computeIconLocation();return a=Blockly.RTL?a-Blockly.BlockSvg.SEP_SPACE_X:a+(b+Blockly.BlockSvg.SEP_SPACE_X)}; Blockly.Icon.prototype.setIconLocation=function(a,b){this.iconX_=a;this.iconY_=b;this.isVisible()&&this.bubble_.setAnchorLocation(a,b)};Blockly.Icon.prototype.computeIconLocation=function(){var a=this.block_.getRelativeToSurfaceXY(),b=Blockly.getRelativeXY_(this.iconGroup_),c=a.x+b.x+Blockly.Icon.RADIUS,a=a.y+b.y+Blockly.Icon.RADIUS;c===this.iconX_&&a===this.iconY_||this.setIconLocation(c,a)};Blockly.Icon.prototype.getIconLocation=function(){return{x:this.iconX_,y:this.iconY_}};Blockly.Comment=function(a){Blockly.Comment.superClass_.constructor.call(this,a);this.createIcon_()};goog.inherits(Blockly.Comment,Blockly.Icon);Blockly.Comment.prototype.text_="";Blockly.Comment.prototype.width_=160;Blockly.Comment.prototype.height_=80; Blockly.Comment.prototype.createIcon_=function(){Blockly.Icon.prototype.createIcon_.call(this);Blockly.createSvgElement("circle",{"class":"blocklyIconShield",r:Blockly.Icon.RADIUS,cx:Blockly.Icon.RADIUS,cy:Blockly.Icon.RADIUS},this.iconGroup_);this.iconMark_=Blockly.createSvgElement("text",{"class":"blocklyIconMark",x:Blockly.Icon.RADIUS,y:2*Blockly.Icon.RADIUS-3},this.iconGroup_);this.iconMark_.appendChild(document.createTextNode("?"))}; -Blockly.Comment.prototype.createEditor_=function(){this.foreignObject_=Blockly.createSvgElement("foreignObject",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);var a=document.createElementNS(Blockly.HTML_NS,"body");a.setAttribute("xmlns",Blockly.HTML_NS);a.className="blocklyMinimalBody";this.textarea_=document.createElementNS(Blockly.HTML_NS,"textarea");this.textarea_.className="blocklyCommentTextarea";this.textarea_.setAttribute("dir",Blockly.RTL?"RTL":"LTR");a.appendChild(this.textarea_); -this.foreignObject_.appendChild(a);Blockly.bindEvent_(this.textarea_,"mouseup",this,this.textareaFocus_);return this.foreignObject_};Blockly.Comment.prototype.resizeBubble_=function(){var a=this.bubble_.getBubbleSize(),b=2*Blockly.Bubble.BORDER_WIDTH;this.foreignObject_.setAttribute("width",a.width-b);this.foreignObject_.setAttribute("height",a.height-b);this.textarea_.style.width=a.width-b-4+"px";this.textarea_.style.height=a.height-b-4+"px"}; +Blockly.Comment.prototype.createEditor_=function(){this.foreignObject_=Blockly.createSvgElement("foreignObject",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);var a=document.createElementNS(Blockly.HTML_NS,"body");a.setAttribute("xmlns",Blockly.HTML_NS);a.className="blocklyMinimalBody";this.textarea_=document.createElementNS(Blockly.HTML_NS,"textarea");this.textarea_.className="blocklyCommentTextarea";this.textarea_.setAttribute("dir",Blockly.RTL?"RTL":"LTR");this.updateEditable(); +a.appendChild(this.textarea_);this.foreignObject_.appendChild(a);Blockly.bindEvent_(this.textarea_,"mouseup",this,this.textareaFocus_);return this.foreignObject_};Blockly.Comment.prototype.updateEditable=function(){this.textarea_&&(this.block_.isEditable()?(this.textarea_.removeAttribute("disabled"),this.textarea_.removeAttribute("readonly")):(this.textarea_.setAttribute("disabled","disabled"),this.textarea_.setAttribute("readonly","readonly")));Blockly.Icon.prototype.updateEditable.call(this)}; +Blockly.Comment.prototype.resizeBubble_=function(){var a=this.bubble_.getBubbleSize(),b=2*Blockly.Bubble.BORDER_WIDTH;this.foreignObject_.setAttribute("width",a.width-b);this.foreignObject_.setAttribute("height",a.height-b);this.textarea_.style.width=a.width-b-4+"px";this.textarea_.style.height=a.height-b-4+"px"}; Blockly.Comment.prototype.setVisible=function(a){if(a!=this.isVisible()){var b=this.getText(),c=this.getBubbleSize();a?(this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svg_.svgGroup_,this.iconX_,this.iconY_,this.width_,this.height_),this.bubble_.registerResizeEvent(this,this.resizeBubble_),this.updateColour(),this.text_=null):(this.bubble_.dispose(),this.foreignObject_=this.textarea_=this.bubble_=null);this.setText(b);this.setBubbleSize(c.width,c.height)}}; Blockly.Comment.prototype.textareaFocus_=function(a){this.bubble_.promote_();this.textarea_.focus()};Blockly.Comment.prototype.getBubbleSize=function(){return this.isVisible()?this.bubble_.getBubbleSize():{width:this.width_,height:this.height_}};Blockly.Comment.prototype.setBubbleSize=function(a,b){this.isVisible()?this.bubble_.setBubbleSize(a,b):(this.width_=a,this.height_=b)};Blockly.Comment.prototype.getText=function(){return this.isVisible()?this.textarea_.value:this.text_}; Blockly.Comment.prototype.setText=function(a){this.isVisible()?this.textarea_.value=a:this.text_=a};Blockly.Comment.prototype.dispose=function(){this.block_.comment=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Connection=function(a,b){this.sourceBlock_=a;this.targetConnection=null;this.type=b;this.y_=this.x_=0;this.inDB_=!1;this.dbList_=this.sourceBlock_.workspace.connectionDBList}; @@ -793,8 +798,9 @@ Blockly.Input.prototype.appendTitle=function(a,b){console.log("Deprecated call t Blockly.Input.prototype.setVisible=function(a){var b=[];if(this.visible_==a)return b;for(var c=(this.visible_=a)?"block":"none",d=0,e;e=this.fieldRow[d];d++)e.setVisible(a);this.connection&&(b=a?this.connection.unhideAll():this.connection.hideAll(),d=this.connection.targetBlock())&&(d.svg_.getRootElement().style.display=c,a||(d.rendered=!1));return b};Blockly.Input.prototype.setCheck=function(a){if(!this.connection)throw"This input does not have a connection.";this.connection.setCheck(a);return this}; Blockly.Input.prototype.setAlign=function(a){this.align=a;this.sourceBlock_.rendered&&this.sourceBlock_.render();return this};Blockly.Input.prototype.init=function(){for(var a=0;aa||Math.abs(this.workspaceHeight_-b)>a)this.workspaceWidth_=d,this.workspaceHeight_=b,this.bubble_.setBubbleSize(d+a,b+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_),this.svgDialog_.setAttribute("height",this.workspaceHeight_); Blockly.RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a))}; Blockly.Mutator.prototype.setVisible=function(a){if(a!=this.isVisible())if(a){this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svg_.svgGroup_,this.iconX_,this.iconY_,null,null);var b=this;this.flyout_.init(this.workspace_,!1);this.flyout_.show(this.quarkXml_);this.rootBlock_=this.block_.decompose(this.workspace_);a=this.rootBlock_.getDescendants();for(var c=0,d;d=a[c];c++)d.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);a=2*this.flyout_.CORNER_RADIUS; @@ -822,7 +828,7 @@ Blockly.bindEvent_(document,"mouseup",this,this.onMouseUp_);Blockly.Block.onMous Blockly.Block.prototype.onMouseUp_=function(a){Blockly.terminateDrag_();Blockly.selected&&Blockly.highlightedConnection_?(Blockly.localConnection_.connect(Blockly.highlightedConnection_),this.svg_&&(Blockly.localConnection_.isSuperior()?Blockly.highlightedConnection_:Blockly.localConnection_).sourceBlock_.svg_.connectionUiEffect(),this.workspace.trashcan&&this.workspace.trashcan.isOpen&&this.workspace.trashcan.close()):this.workspace.trashcan&&this.workspace.trashcan.isOpen&&(a=this.workspace.trashcan, goog.Timer.callOnce(a.close,100,a),Blockly.selected.dispose(!1,!0),Blockly.fireUiEvent(window,"resize"));Blockly.highlightedConnection_&&(Blockly.highlightedConnection_.unhighlight(),Blockly.highlightedConnection_=null)};Blockly.Block.prototype.showHelp_=function(){var a=goog.isFunction(this.helpUrl)?this.helpUrl():this.helpUrl;a&&window.open(a)}; Blockly.Block.prototype.duplicate_=function(){var a=Blockly.Xml.blockToDom_(this);Blockly.Xml.deleteNext(a);var a=Blockly.Xml.domToBlock_(this.workspace,a),b=this.getRelativeToSurfaceXY();b.x=Blockly.RTL?b.x-Blockly.SNAP_RADIUS:b.x+Blockly.SNAP_RADIUS;b.y+=2*Blockly.SNAP_RADIUS;a.moveBy(b.x,b.y);return a}; -Blockly.Block.prototype.showContextMenu_=function(a){if(!Blockly.readOnly&&this.contextMenu){var b=this,c=[];if(this.isDeletable()&&!b.isInFlyout){var d={text:Blockly.Msg.DUPLICATE_BLOCK,enabled:!0,callback:function(){b.duplicate_()}};this.getDescendants().length>this.workspace.remainingCapacity()&&(d.enabled=!1);c.push(d);Blockly.Comment&&!this.collapsed_&&(d={enabled:!0},this.comment?(d.text=Blockly.Msg.REMOVE_COMMENT,d.callback=function(){b.setCommentText(null)}):(d.text=Blockly.Msg.ADD_COMMENT, +Blockly.Block.prototype.showContextMenu_=function(a){if(!Blockly.readOnly&&this.contextMenu){var b=this,c=[];if(this.isDeletable()&&!b.isInFlyout){var d={text:Blockly.Msg.DUPLICATE_BLOCK,enabled:!0,callback:function(){b.duplicate_()}};this.getDescendants().length>this.workspace.remainingCapacity()&&(d.enabled=!1);c.push(d);this.isEditable()&&!this.collapsed_&&(d={enabled:!0},this.comment?(d.text=Blockly.Msg.REMOVE_COMMENT,d.callback=function(){b.setCommentText(null)}):(d.text=Blockly.Msg.ADD_COMMENT, d.callback=function(){b.setCommentText("")}),c.push(d));if(!this.collapsed_)for(d=0;dd?1:c","LT"],["\u2265","LTE"],["<","GT"],["\u2264","GTE"]]:[["=","EQ"],["\u2260","NEQ"],["<","LT"],["\u2264","LTE"],[">","GT"],["\u2265","GTE"]];this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.appendValueInput("A");this.appendValueInput("B").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var b=this;this.setTooltip(function(){var a= -b.getFieldValue("OP");return{EQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[a]})}}; -Blockly.Blocks.logic_operation={init:function(){var a=[[Blockly.Msg.LOGIC_OPERATION_AND,"AND"],[Blockly.Msg.LOGIC_OPERATION_OR,"OR"]];this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.appendValueInput("A").setCheck("Boolean");this.appendValueInput("B").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("OP");return{AND:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND, -OR:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR}[a]})}};Blockly.Blocks.logic_negate={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_NEGATE_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.interpolateMsg(Blockly.Msg.LOGIC_NEGATE_TITLE,["BOOL","Boolean",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT);this.setTooltip(Blockly.Msg.LOGIC_NEGATE_TOOLTIP)}}; -Blockly.Blocks.logic_boolean={init:function(){var a=[[Blockly.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[Blockly.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]];this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"BOOL");this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP)}}; -Blockly.Blocks.logic_null={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_NULL_HELPURL);this.setColour(210);this.setOutput(!0);this.appendDummyInput().appendField(Blockly.Msg.LOGIC_NULL);this.setTooltip(Blockly.Msg.LOGIC_NULL_TOOLTIP)}}; -Blockly.Blocks.logic_ternary={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_TERNARY_HELPURL);this.setColour(210);this.appendValueInput("IF").setCheck("Boolean").appendField(Blockly.Msg.LOGIC_TERNARY_CONDITION);this.appendValueInput("THEN").appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE);this.appendValueInput("ELSE").appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE);this.setOutput(!0);this.setTooltip(Blockly.Msg.LOGIC_TERNARY_TOOLTIP)}};Blockly.Blocks.loops={}; -Blockly.Blocks.controls_repeat={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_REPEAT_HELPURL);this.setColour(120);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT).appendField(new Blockly.FieldTextInput("10",Blockly.FieldTextInput.nonnegativeIntegerValidator),"TIMES").appendField(Blockly.Msg.CONTROLS_REPEAT_TITLE_TIMES);this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_REPEAT_TOOLTIP)}}; -Blockly.Blocks.controls_repeat_ext={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_REPEAT_HELPURL);this.setColour(120);this.interpolateMsg(Blockly.Msg.CONTROLS_REPEAT_TITLE,["TIMES","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT);this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setInputsInline(!0);this.setTooltip(Blockly.Msg.CONTROLS_REPEAT_TOOLTIP)}}; -Blockly.Blocks.controls_whileUntil={init:function(){var a=[[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]];this.setHelpUrl(Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL);this.setColour(120);this.appendValueInput("BOOL").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"MODE");this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO);this.setPreviousStatement(!0);this.setNextStatement(!0);var b=this; -this.setTooltip(function(){var a=b.getFieldValue("MODE");return{WHILE:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[a]})}}; -Blockly.Blocks.controls_for={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_FOR_HELPURL);this.setColour(120);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH).appendField(new Blockly.FieldVariable(null),"VAR");this.interpolateMsg(Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY,["FROM","Number",Blockly.ALIGN_RIGHT],["TO","Number",Blockly.ALIGN_RIGHT],["BY","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT);this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOR_INPUT_DO); -this.setPreviousStatement(!0);this.setNextStatement(!0);this.setInputsInline(!0);var a=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(a,b){Blockly.Names.equals(a,this.getFieldValue("VAR"))&&this.setFieldValue(b,"VAR")},customContextMenu:function(a){var b={enabled:!0},c=this.getFieldValue("VAR");b.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",c);c=goog.dom.createDom("field", -null,c);c.setAttribute("name","VAR");c=goog.dom.createDom("block",null,c);c.setAttribute("type","variables_get");b.callback=Blockly.ContextMenu.callbackFactory(this,c);a.push(b)}}; -Blockly.Blocks.controls_forEach={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_FOREACH_HELPURL);this.setColour(120);this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM).appendField(new Blockly.FieldVariable(null),"VAR").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST);Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL&&(this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL),this.setInputsInline(!0));this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_DO); -this.setPreviousStatement(!0);this.setNextStatement(!0);var a=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOREACH_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(a,b){Blockly.Names.equals(a,this.getFieldValue("VAR"))&&this.setFieldValue(b,"VAR")},customContextMenu:Blockly.Blocks.controls_for.customContextMenu}; -Blockly.Blocks.controls_flow_statements={init:function(){var a=[[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];this.setHelpUrl(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL);this.setColour(120);this.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"FLOW");this.setPreviousStatement(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("FLOW");return b.TOOLTIPS[a]})},onchange:function(){if(this.workspace){var a= -!1,b=this;do{if("controls_repeat"==b.type||"controls_repeat_ext"==b.type||"controls_forEach"==b.type||"controls_for"==b.type||"controls_whileUntil"==b.type){a=!0;break}b=b.getSurroundParent()}while(b);a?this.setWarningText(null):this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING)}}};Blockly.Blocks.math={};Blockly.Blocks.math_number={init:function(){this.setHelpUrl(Blockly.Msg.MATH_NUMBER_HELPURL);this.setColour(230);this.appendDummyInput().appendField(new Blockly.FieldTextInput("0",Blockly.FieldTextInput.numberValidator),"NUM");this.setOutput(!0,"Number");this.setTooltip(Blockly.Msg.MATH_NUMBER_TOOLTIP)}}; +Blockly.Blocks.text={};Blockly.Blocks.text={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);this.setColour(160);this.appendDummyInput().appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote0.png",12,12)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote1.png",12,12));this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_TEXT_TOOLTIP)}}; +Blockly.Blocks.text_join={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_JOIN_HELPURL);this.setColour(160);this.appendValueInput("ADD0").appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH);this.appendValueInput("ADD1");this.setOutput(!0,"String");this.setMutator(new Blockly.Mutator(["text_create_join_item"]));this.setTooltip(Blockly.Msg.TEXT_JOIN_TOOLTIP);this.itemCount_=2},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){for(var b= +0;b","LT"],["\u2265","LTE"],["<","GT"],["\u2264","GTE"]]:[["=","EQ"],["\u2260","NEQ"],["<","LT"],["\u2264","LTE"],[">","GT"],["\u2265","GTE"]];this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.appendValueInput("A");this.appendValueInput("B").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var b=this;this.setTooltip(function(){var a= +b.getFieldValue("OP");return{EQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[a]})}}; +Blockly.Blocks.logic_operation={init:function(){var a=[[Blockly.Msg.LOGIC_OPERATION_AND,"AND"],[Blockly.Msg.LOGIC_OPERATION_OR,"OR"]];this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.appendValueInput("A").setCheck("Boolean");this.appendValueInput("B").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("OP");return{AND:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND, +OR:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR}[a]})}};Blockly.Blocks.logic_negate={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_NEGATE_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.interpolateMsg(Blockly.Msg.LOGIC_NEGATE_TITLE,["BOOL","Boolean",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT);this.setTooltip(Blockly.Msg.LOGIC_NEGATE_TOOLTIP)}}; +Blockly.Blocks.logic_boolean={init:function(){var a=[[Blockly.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[Blockly.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]];this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);this.setColour(210);this.setOutput(!0,"Boolean");this.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"BOOL");this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP)}}; +Blockly.Blocks.logic_null={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_NULL_HELPURL);this.setColour(210);this.setOutput(!0);this.appendDummyInput().appendField(Blockly.Msg.LOGIC_NULL);this.setTooltip(Blockly.Msg.LOGIC_NULL_TOOLTIP)}}; +Blockly.Blocks.logic_ternary={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_TERNARY_HELPURL);this.setColour(210);this.appendValueInput("IF").setCheck("Boolean").appendField(Blockly.Msg.LOGIC_TERNARY_CONDITION);this.appendValueInput("THEN").appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE);this.appendValueInput("ELSE").appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE);this.setOutput(!0);this.setTooltip(Blockly.Msg.LOGIC_TERNARY_TOOLTIP)}};Blockly.Blocks.lists={};Blockly.Blocks.lists_create_empty={init:function(){this.setHelpUrl(Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL);this.setColour(260);this.setOutput(!0,"Array");this.appendDummyInput().appendField(Blockly.Msg.LISTS_CREATE_EMPTY_TITLE);this.setTooltip(Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP)}}; +Blockly.Blocks.lists_create_with={init:function(){this.setColour(260);this.appendValueInput("ADD0").appendField(Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH);this.appendValueInput("ADD1");this.appendValueInput("ADD2");this.setOutput(!0,"Array");this.setMutator(new Blockly.Mutator(["lists_create_with_item"]));this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP);this.itemCount_=3},mutationToDom:function(a){a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){for(var b= +0;b|number} var_args A series of tuples that - * each specify the value inputs to create. Each tuple has three values: - * the input name, its check type, and its field's alignment. The last - * parameter is not a tuple, but just an alignment for any trailing dummy - * input. This last parameter is mandatory; there may be any number of - * tuples (though the number of tuples must match the symbols in msg). + * for value inputs or for Fields, such as an instance of + * Blockly.FieldDropdown, which would be placed as a field in either the + * following value input or a dummy input. The newline character forces + * the creation of an unnamed dummy input if any fields need placement. + * Note that '%10' would be interpreted as a reference to the tenth + * argument. To show the first argument followed by a zero, use '%1 0'. + * (Spaces around tokens are stripped.) To display a percentage sign + * followed by a number (e.g., "%123"), put that text in a + * Blockly.FieldLabel (as described below). + * @param {!Array.|Blockly.Field>|number} var_args + * A series of tuples that each specify the value inputs to create. Each + * tuple has at least two elements. The first is its name; the second is + * its type, which can be any of: + * - A string (such as 'Number'), denoting the one type allowed in the + * corresponding socket. + * - An array of strings (such as ['Number', 'List']), denoting the + * different types allowed in the corresponding socket. + * - null, denoting that any type is allowed in the corresponding socket. + * - Blockly.Field, in which case that field instance, such as an + * instance of Blockly.FieldDropdown, appears (instead of a socket). + * If the type is any of the first three options (which are legal arguments + * to setCheck()), there should be a third element in the tuple, giving its + * alignment. + * The final parameter is not a tuple, but just an alignment for any + * trailing dummy inputs. This last parameter is mandatory; there may be + * any number of tuples (though the number of tuples must match the symbols + * in msg). */ Blockly.Block.prototype.interpolateMsg = function(msg, var_args) { + /** + * Add a field to this input. + * @this !Blockly.input + * @param {Blockly.Field|Array.} field + * This is either a Field or a tuple of a name and a Field. + */ + function addFieldToInput(field) { + if (field instanceof Blockly.Field) { + this.appendField(field); + } else { + goog.asserts.assert(field instanceof Array); + this.appendField(field[1], field[0]); + } + } + // Validate the msg at the start and the dummy alignment at the end, // and remove the latter. goog.asserts.assertString(msg); @@ -1437,28 +1472,48 @@ Blockly.Block.prototype.interpolateMsg = function(msg, var_args) { 'Illegal final argument "%d" is not an alignment.', dummyAlign); arguments.length = arguments.length - 1; - var tokens = msg.split(/(%\d)/); + var tokens = msg.split(this.interpolateMsg.SPLIT_REGEX_); + var fields = []; for (var i = 0; i < tokens.length; i += 2) { var text = goog.string.trim(tokens[i]); + var input = undefined; + if (text) { + fields.push(new Blockly.FieldLabel(text)); + } var symbol = tokens[i + 1]; - if (symbol) { - // Value input. - var digit = parseInt(symbol.charAt(1), 10); - var tuple = arguments[digit]; + if (symbol && symbol.charAt(0) == '%') { + // Numeric field. + var number = parseInt(symbol.substring(1), 10); + var tuple = arguments[number]; goog.asserts.assertArray(tuple, 'Message symbol "%s" is out of range.', symbol); - this.appendValueInput(tuple[0]) - .setCheck(tuple[1]) - .setAlign(tuple[2]) - .appendField(text); - arguments[digit] = null; // Inputs may not be reused. - } else if (text) { - // Trailing dummy input. - this.appendDummyInput() - .setAlign(dummyAlign) - .appendField(text); + goog.asserts.assertArray(tuple, + 'Argument "%s" is not a tuple.', symbol); + if (tuple[1] instanceof Blockly.Field) { + fields.push([tuple[0], tuple[1]]); + } else { + input = this.appendValueInput(tuple[0]) + .setCheck(tuple[1]) + .setAlign(tuple[2]); + } + arguments[number] = null; // Inputs may not be reused. + } else if (symbol == '\n' && fields.length) { + // Create a dummy input. + input = this.appendDummyInput(); + } + // If we just added an input, hang any pending fields on it. + if (input && fields.length) { + fields.forEach(addFieldToInput, input); + fields = []; } } + // If any fields remain, create a trailing dummy input. + if (fields.length) { + var input = this.appendDummyInput() + .setAlign(dummyAlign); + fields.forEach(addFieldToInput, input); + } + // Verify that all inputs were used. for (var i = 1; i < arguments.length - 1; i++) { goog.asserts.assert(arguments[i] === null, @@ -1466,9 +1521,13 @@ Blockly.Block.prototype.interpolateMsg = function(msg, var_args) { } // Make the inputs inline unless there is only one input and // no text follows it. - this.setInputsInline(!msg.match(/%1\s*$/)) + this.setInputsInline(!msg.match(this.interpolateMsg.INLINE_REGEX_)); }; +Blockly.Block.prototype.interpolateMsg.SPLIT_REGEX_ = /(%\d+|\n)/; +Blockly.Block.prototype.interpolateMsg.INLINE_REGEX_ = /%1\s*$/; + + /** * Add a value input, statement input or local variable to this block. * @param {number} type Either Blockly.INPUT_VALUE or Blockly.NEXT_STATEMENT or diff --git a/core/blocks.js b/core/blocks.js index 2c27199f1..5c6a6ef0b 100644 --- a/core/blocks.js +++ b/core/blocks.js @@ -22,9 +22,155 @@ * @author fraser@google.com (Neil Fraser) */ 'use strict'; +goog.require('goog.asserts'); /** * Name space for the Blocks singleton. - * Blocks gets populated in the blocks files. + * Blocks gets populated in the blocks files, possibly through calls to + * Blocks.addTemplate(). */ goog.provide('Blockly.Blocks'); + +/** + * Create a block template and add it as a field to Blockly.Blocks with the + * name details.blockName. + * @param {!object} details Details about the block that should be created. + * The following fields are used: + * - blockName {!string} The name of the block, which should be unique. + * - colour {!number} The hue value of the colour to use for the block. + * (Blockly.HSV_SATURATION and Blockly.HSV_VALUE are used for saturation + * and value, respectively.) + * - output {?string|Array.} Output type. If undefined, there are + * assumed to be no outputs. Otherwise, this is interpreted the same way + * as arguments to Blockly.Block.setCheck(): + * - null: Any type can be produced. + * - String: Only the specified type (e.g., 'Number') can be produced. + * - Array.: Any of the specified types can be produced. + * - message {!string} A message suitable for passing as a first argument to + * Blockly.Block.interpolateMsg(). Specifically, it should consist of + * text to be displayed on the block, optionally interspersed with + * references to inputs (one-based indices into the args array) or fields, + * such as '%1' for the first element of args. The creation of dummy + * inputs can be forced with a newline (\n). + * - args {?Array.} One or more descriptions of value inputs. + * TODO: Add Fields and statement stacks. + * Each object in the array can have the following fields: + * - name {!string} The name of the input. + * - type {?number} One of Blockly.INPUT_VALUE, Blockly.NEXT_STATEMENT, or + * ??. If not provided, it is assumed to be Blockly.INPUT_VALUE. + * - check {?string|Array.} Input type. See description of the + * output field above. + * - align {?number} One of Blockly.ALIGN_LEFT, Blockly.ALIGN_CENTRE, or + * Blockly.ALIGN_RIGHT (the default value, if not explicitly provided). + * - inline {?boolean}: Whether inputs should be inline (true) or external + * (false). If not explicitly specified, inputs will be inline if message + * references, and ends with, a single value input. + * - previousStatement {?boolean} Whether there should be a statement + * connector on the top of the block. If not specified, the default + * value will be !output. + * - nextStatement {?boolean} Whether there should be a statement + * connector on the bottom of the block. If not specified, the default + * value will be !output. + * - tooltip {?string|function} Tooltip text or a function on this block + * that returns a tooltip string. + * - helpUrl {?string|function} The help URL, or a function on this block + * that returns the help URL. + * - switchable {?boolean} Whether the block should be switchable between + * an expression and statement. Specifically, if true, the block will + * begin as an expression (having an output). There will be a context + * menu option 'Remove output'. If selected, the output will disappear, + * and previous and next statement connectors will appear. The context + * menu option 'Remove output' will be replaced by 'Add Output'. If + * selected, the output will reappear and the statement connectors will + * disappear. + * - mutationToDomFunc {?function} TODO desc. + * - domToMutationFunc {?function} TODO desc. + * - customContextMenuFunc {?function} TODO desc. + * Additional fields will be ignored. + */ +Blockly.Blocks.addTemplate = function(details) { + // Validate inputs. TODO: Add more. + goog.asserts.assert(details.blockName); + goog.asserts.assert(Blockly.Blocks[details.blockName], + 'Blockly.Blocks already has a field named ', details.blockName); + goog.asserts.assert(details.message); + goog.asserts.assert(details.colour && typeof details.colour == 'number' && + details.colour >= 0 && details.colour < 360, + 'details.colour must be a number from 0 to 360 (exclusive)'); + if (details.output != 'undefined') { + goog.asserts.assert(!details.previousStatement, + 'When details.output is defined, ' + + 'details.previousStatement must not be true.'); + goog.asserts.assert(!details.nextStatement, + 'When details.output is defined, ' + + 'details.nextStatement must not be true.'); + } + + // Build up template. + var block = {}; + block.init = function() { + var thisBlock = this; + // Set basic properties of block. + this.setColour(details.colour); + this.setHelpUrl(details.helpUrl); + if (typeof details.tooltip == 'string') { + this.setTooltip(details.tooltip); + } else if (typeof details.tooltip == 'function') { + this.setTooltip(function() { + return details.tooltip(thisBlock); + }); + } + // Set output and previous/next connections. + if (details.output != 'undefined') { + this.setOutput(true, details.output); + } else { + this.setPreviousStatement( + typeof details.previousStatement == 'undefined' ? + true : details.previousStatement); + this.setNextStatement( + typeof details.nextStatement == 'undefined' ? + true : details.nextStatement); + } + // Build up arguments in the format expected by interpolateMsg. + var interpArgs = []; + interpArgs.push(details.text); + if (details.args) { + details.args.forEach(function(arg) { + goog.asserts.assert(arg.name); + goog.asserts.assert(arg.check != 'undefined'); + if (arg.type == 'undefined' || arg.type == Blockly.INPUT_VALUE) { + interpArgs.push([arg.name, + arg.check, + typeof arg.align == 'undefined' ? Blockly.ALIGN_RIGHT + : arg.align]); + } else { + // TODO: Write code for other input types. + goog.asserts.fail('addTemplate() can only handle value inputs.'); + } + }); + } + // Neil, how would you recommend specifying the final dummy alignment? + // Should it be a top-level field in details? + interpAgs.push(Blockly.ALIGN_RIGHT); + if (details.inline) { + this.setInlineInputs(details.inline); + } + Blockly.Block.prototype.interpolateMsg.apply(this, interpArgs); + }; + + // Create mutationToDom if needed. + if (details.switchable) { + block.mutationToDom = function() { + var container = details.mutationToDomFunc ? details.mutatationToDomFunc() + : document.createElement('mutation'); + container.setAttribute('is_statement', this['isStatement'] || false); + return container; + }; + } else { + block.mutationToDom = details.mutationToDomFunc; + } + // TODO: Add domToMutation and customContextMenu. + + // Add new block to Blockly.Blocks. + Blockly.Blocks[details.blockName] = block; +}; diff --git a/core/comment.js b/core/comment.js index c65c2bf1e..50ab74ccf 100644 --- a/core/comment.js +++ b/core/comment.js @@ -105,12 +105,31 @@ Blockly.Comment.prototype.createEditor_ = function() { this.textarea_ = document.createElementNS(Blockly.HTML_NS, 'textarea'); this.textarea_.className = 'blocklyCommentTextarea'; this.textarea_.setAttribute('dir', Blockly.RTL ? 'RTL' : 'LTR'); + this.updateEditable(); body.appendChild(this.textarea_); this.foreignObject_.appendChild(body); Blockly.bindEvent_(this.textarea_, 'mouseup', this, this.textareaFocus_); return this.foreignObject_; }; +/** + * Add or remove editability of the textarea. + * @override + */ +Blockly.Comment.prototype.updateEditable = function() { + if (this.textarea_) { + if (!this.block_.isEditable()) { + this.textarea_.setAttribute('disabled', 'disabled'); + this.textarea_.setAttribute('readonly', 'readonly'); + } else { + this.textarea_.removeAttribute('disabled'); + this.textarea_.removeAttribute('readonly'); + } + } + // Allow the icon to update. + Blockly.Icon.prototype.updateEditable.call(this); +}; + /** * Callback function triggered when the bubble has resized. * Resize the text area accordingly. @@ -227,4 +246,3 @@ Blockly.Comment.prototype.dispose = function() { this.block_.comment = null; Blockly.Icon.prototype.dispose.call(this); }; - diff --git a/core/generator.js b/core/generator.js index c93d93a49..428a6a8f2 100644 --- a/core/generator.js +++ b/core/generator.js @@ -223,3 +223,41 @@ Blockly.Generator.prototype.statementToCode = function(block, name) { Blockly.Generator.prototype.addReservedWords = function(words) { this.RESERVED_WORDS_ += words + ','; }; + +/** + * This is used as a placeholder in functions defined using + * Blockly.Generator.provideFunction_. It must not be legal code that could + * legitimately appear in a function definition (or comment), and it must + * not confuse the regular expression parser. + */ +Blockly.Generator.prototype.FUNCTION_NAME_PLACEHOLDER_ = '{leCUI8hutHZI4480Dc}'; +Blockly.Generator.prototype.FUNCTION_NAME_PLACEHOLDER_REGEXP_ = + new RegExp(Blockly.Generator.prototype.FUNCTION_NAME_PLACEHOLDER_, 'g'); + +/** + * Define a function to be included in the generated code. + * The first time this is called with a given desiredName, the code is + * saved and an actual name is generated. Subsequent calls with the + * same desiredName have no effect but have the same return value. + * + * It is up to the caller to make sure the same desiredName is not + * used for different code values. + * + * The code gets output when Blockly.Generator.finish() is called. + * + * @param {string} desiredName The desired name of the function (e.g., isPrime). + * @param {string} code A list of Python statements. + * @return {string} The actual name of the new function. This may differ + * from desiredName if the former has already been taken by the user. + * @private + */ +Blockly.Generator.prototype.provideFunction_ = function(desiredName, code) { + if (!this.definitions_[desiredName]) { + var functionName = + this.variableDB_.getDistinctName(desiredName, this.NAME_TYPE); + this.functionNames_[desiredName] = functionName; + this.definitions_[desiredName] = code.join('\n').replace( + this.FUNCTION_NAME_PLACEHOLDER_REGEXP_, functionName); + } + return this.functionNames_[desiredName]; +}; diff --git a/core/icon.js b/core/icon.js index 5465af129..bfcd1db84 100644 --- a/core/icon.js +++ b/core/icon.js @@ -88,7 +88,7 @@ Blockly.Icon.prototype.dispose = function() { * Add or remove the UI indicating if this icon may be clicked or not. */ Blockly.Icon.prototype.updateEditable = function() { - if (this.block_.isEditable() && !this.block_.isInFlyout) { + if (!this.block_.isInFlyout) { Blockly.addClass_(/** @type {!Element} */ (this.iconGroup_), 'blocklyIconGroup'); } else { @@ -111,7 +111,7 @@ Blockly.Icon.prototype.isVisible = function() { * @private */ Blockly.Icon.prototype.iconClick_ = function(e) { - if (this.block_.isEditable() && !this.block_.isInFlyout) { + if (!this.block_.isInFlyout) { this.setVisible(!this.isVisible()); } }; diff --git a/core/mutator.js b/core/mutator.js index c3255d13f..45c6c7ca0 100644 --- a/core/mutator.js +++ b/core/mutator.js @@ -82,6 +82,19 @@ Blockly.Mutator.prototype.createIcon = function() { this.iconMark_.appendChild(document.createTextNode('\u2605')); }; +/** + * Clicking on the icon toggles if the mutator bubble is visible. + * Disable if block is uneditable. + * @param {!Event} e Mouse click event. + * @private + * @override + */ +Blockly.Mutator.prototype.iconClick_ = function(e) { + if (this.block_.isEditable()) { + Blockly.Icon.prototype.iconClick_.call(this, e); + } +}; + /** * Create the editor for the mutator's bubble. * @return {!Element} The top-level node of the editor. @@ -112,6 +125,21 @@ Blockly.Mutator.prototype.createEditor_ = function() { return this.svgDialog_; }; +/** + * Add or remove the UI indicating if this icon may be clicked or not. + */ +Blockly.Mutator.prototype.updateEditable = function() { + if (this.block_.isEditable()) { + // Default behaviour for an icon. + Blockly.Icon.prototype.updateEditable.call(this); + } else { + // Close any mutator bubble. Icon is not clickable. + this.setVisible(false); + Blockly.removeClass_(/** @type {!Element} */ (this.iconGroup_), + 'blocklyIconGroup'); + } +}; + /** * Callback function triggered when the bubble has resized. * Resize the workspace accordingly. diff --git a/core/xml.js b/core/xml.js index 3bcaf61dd..c39fd57b1 100644 --- a/core/xml.js +++ b/core/xml.js @@ -245,10 +245,6 @@ Blockly.Xml.domToBlock_ = function(workspace, xmlBlock) { if (inline) { block.setInputsInline(inline == 'true'); } - var collapsed = xmlBlock.getAttribute('collapsed'); - if (collapsed) { - block.setCollapsed(collapsed == 'true'); - } var disabled = xmlBlock.getAttribute('disabled'); if (disabled) { block.setDisabled(disabled == 'true'); @@ -356,6 +352,10 @@ Blockly.Xml.domToBlock_ = function(workspace, xmlBlock) { } else { block.render(); } + var collapsed = xmlBlock.getAttribute('collapsed'); + if (collapsed) { + block.setCollapsed(collapsed == 'true'); + } return block; }; diff --git a/generators/javascript.js b/generators/javascript.js index 9d5e63b71..895117c11 100644 --- a/generators/javascript.js +++ b/generators/javascript.js @@ -112,6 +112,9 @@ Blockly.JavaScript.INFINITE_LOOP_TRAP = null; Blockly.JavaScript.init = function() { // Create a dictionary of definitions to be printed before the code. Blockly.JavaScript.definitions_ = Object.create(null); + // Create a dictionary mapping desired function names in definitions_ + // to actual function names (to avoid collisions with user functions). + Blockly.JavaScript.functionNames_ = Object.create(null); if (Blockly.Variables) { if (!Blockly.JavaScript.variableDB_) { diff --git a/generators/javascript/colour.js b/generators/javascript/colour.js index d025553e8..240397dc5 100644 --- a/generators/javascript/colour.js +++ b/generators/javascript/colour.js @@ -36,18 +36,13 @@ Blockly.JavaScript['colour_picker'] = function(block) { Blockly.JavaScript['colour_random'] = function(block) { // Generate a random colour. - if (!Blockly.JavaScript.definitions_['colour_random']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'colour_random', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.colour_random.functionName = functionName; - var func = []; - func.push('function ' + functionName + '() {'); - func.push(' var num = Math.floor(Math.random() * Math.pow(2, 24));'); - func.push(' return \'#\' + (\'00000\' + num.toString(16)).substr(-6);'); - func.push('}'); - Blockly.JavaScript.definitions_['colour_random'] = func.join('\n'); - } - var code = Blockly.JavaScript.colour_random.functionName + '()'; + var functionName = Blockly.JavaScript.provideFunction_( + 'colour_random', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '() {', + ' var num = Math.floor(Math.random() * Math.pow(2, 24));', + ' return \'#\' + (\'00000\' + num.toString(16)).substr(-6);', + '}']); + var code = functionName + '()'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; }; @@ -59,25 +54,19 @@ Blockly.JavaScript['colour_rgb'] = function(block) { Blockly.JavaScript.ORDER_COMMA) || 0; var blue = Blockly.JavaScript.valueToCode(block, 'BLUE', Blockly.JavaScript.ORDER_COMMA) || 0; - - if (!Blockly.JavaScript.definitions_['colour_rgb']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'colour_rgb', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.colour_rgb.functionName = functionName; - var func = []; - func.push('function ' + functionName + '(r, g, b) {'); - func.push(' r = Math.max(Math.min(Number(r), 100), 0) * 2.55;'); - func.push(' g = Math.max(Math.min(Number(g), 100), 0) * 2.55;'); - func.push(' b = Math.max(Math.min(Number(b), 100), 0) * 2.55;'); - func.push(' r = (\'0\' + (Math.round(r) || 0).toString(16)).slice(-2);'); - func.push(' g = (\'0\' + (Math.round(g) || 0).toString(16)).slice(-2);'); - func.push(' b = (\'0\' + (Math.round(b) || 0).toString(16)).slice(-2);'); - func.push(' return \'#\' + r + g + b;'); - func.push('}'); - Blockly.JavaScript.definitions_['colour_rgb'] = func.join('\n'); - } - var code = Blockly.JavaScript.colour_rgb.functionName + - '(' + red + ', ' + green + ', ' + blue + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'colour_rgb', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(r, g, b) {', + ' r = Math.max(Math.min(Number(r), 100), 0) * 2.55;', + ' g = Math.max(Math.min(Number(g), 100), 0) * 2.55;', + ' b = Math.max(Math.min(Number(b), 100), 0) * 2.55;', + ' r = (\'0\' + (Math.round(r) || 0).toString(16)).slice(-2);', + ' g = (\'0\' + (Math.round(g) || 0).toString(16)).slice(-2);', + ' b = (\'0\' + (Math.round(b) || 0).toString(16)).slice(-2);', + ' return \'#\' + r + g + b;', + '}']); + var code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; }; @@ -89,31 +78,25 @@ Blockly.JavaScript['colour_blend'] = function(block) { Blockly.JavaScript.ORDER_COMMA) || '\'#000000\''; var ratio = Blockly.JavaScript.valueToCode(block, 'RATIO', Blockly.JavaScript.ORDER_COMMA) || 0.5; - - if (!Blockly.JavaScript.definitions_['colour_blend']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'colour_blend', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.colour_blend.functionName = functionName; - var func = []; - func.push('function ' + functionName + '(c1, c2, ratio) {'); - func.push(' ratio = Math.max(Math.min(Number(ratio), 1), 0);'); - func.push(' var r1 = parseInt(c1.substring(1, 3), 16);'); - func.push(' var g1 = parseInt(c1.substring(3, 5), 16);'); - func.push(' var b1 = parseInt(c1.substring(5, 7), 16);'); - func.push(' var r2 = parseInt(c2.substring(1, 3), 16);'); - func.push(' var g2 = parseInt(c2.substring(3, 5), 16);'); - func.push(' var b2 = parseInt(c2.substring(5, 7), 16);'); - func.push(' var r = Math.round(r1 * (1 - ratio) + r2 * ratio);'); - func.push(' var g = Math.round(g1 * (1 - ratio) + g2 * ratio);'); - func.push(' var b = Math.round(b1 * (1 - ratio) + b2 * ratio);'); - func.push(' r = (\'0\' + (r || 0).toString(16)).slice(-2);'); - func.push(' g = (\'0\' + (g || 0).toString(16)).slice(-2);'); - func.push(' b = (\'0\' + (b || 0).toString(16)).slice(-2);'); - func.push(' return \'#\' + r + g + b;'); - func.push('}'); - Blockly.JavaScript.definitions_['colour_blend'] = func.join('\n'); - } - var code = Blockly.JavaScript.colour_blend.functionName + - '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'colour_blend', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(c1, c2, ratio) {', + ' ratio = Math.max(Math.min(Number(ratio), 1), 0);', + ' var r1 = parseInt(c1.substring(1, 3), 16);', + ' var g1 = parseInt(c1.substring(3, 5), 16);', + ' var b1 = parseInt(c1.substring(5, 7), 16);', + ' var r2 = parseInt(c2.substring(1, 3), 16);', + ' var g2 = parseInt(c2.substring(3, 5), 16);', + ' var b2 = parseInt(c2.substring(5, 7), 16);', + ' var r = Math.round(r1 * (1 - ratio) + r2 * ratio);', + ' var g = Math.round(g1 * (1 - ratio) + g2 * ratio);', + ' var b = Math.round(b1 * (1 - ratio) + b2 * ratio);', + ' r = (\'0\' + (r || 0).toString(16)).slice(-2);', + ' g = (\'0\' + (g || 0).toString(16)).slice(-2);', + ' b = (\'0\' + (b || 0).toString(16)).slice(-2);', + ' return \'#\' + r + g + b;', + '}']); + var code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; }; diff --git a/generators/javascript/lists.js b/generators/javascript/lists.js index f83dc15c6..a4189013d 100644 --- a/generators/javascript/lists.js +++ b/generators/javascript/lists.js @@ -46,27 +46,21 @@ Blockly.JavaScript['lists_create_with'] = function(block) { Blockly.JavaScript['lists_repeat'] = function(block) { // Create a list with one element repeated. - if (!Blockly.JavaScript.definitions_['lists_repeat']) { - // Function copied from Closure's goog.array.repeat. - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'lists_repeat', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.lists_repeat.repeat = functionName; - var func = []; - func.push('function ' + functionName + '(value, n) {'); - func.push(' var array = [];'); - func.push(' for (var i = 0; i < n; i++) {'); - func.push(' array[i] = value;'); - func.push(' }'); - func.push(' return array;'); - func.push('}'); - Blockly.JavaScript.definitions_['lists_repeat'] = func.join('\n'); - } + var functionName = Blockly.JavaScript.provideFunction_( + 'lists_repeat', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(value, n) {', + ' var array = [];', + ' for (var i = 0; i < n; i++) {', + ' array[i] = value;', + ' }', + ' return array;', + '}']); var argument0 = Blockly.JavaScript.valueToCode(block, 'ITEM', Blockly.JavaScript.ORDER_COMMA) || 'null'; var argument1 = Blockly.JavaScript.valueToCode(block, 'NUM', Blockly.JavaScript.ORDER_COMMA) || '0'; - var code = Blockly.JavaScript.lists_repeat.repeat + - '(' + argument0 + ', ' + argument1 + ')'; + var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; }; @@ -149,20 +143,14 @@ Blockly.JavaScript['lists_getIndex'] = function(block) { var code = list + '.slice(-' + at + ')[0]'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; } else if (mode == 'GET_REMOVE' || mode == 'REMOVE') { - if (!Blockly.JavaScript.definitions_['lists_remove_from_end']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'lists_remove_from_end', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.lists_getIndex.lists_remove_from_end = functionName; - var func = []; - func.push('function ' + functionName + '(list, x) {'); - func.push(' x = list.length - x;'); - func.push(' return list.splice(x, 1)[0];'); - func.push('}'); - Blockly.JavaScript.definitions_['lists_remove_from_end'] = - func.join('\n'); - } - code = Blockly.JavaScript.lists_getIndex.lists_remove_from_end + - '(' + list + ', ' + at + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'lists_remove_from_end', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(list, x) {', + ' x = list.length - x;', + ' return list.splice(x, 1)[0];', + '}']); + code = functionName + '(' + list + ', ' + at + ')'; if (mode == 'GET_REMOVE') { return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; } else if (mode == 'REMOVE') { @@ -170,24 +158,18 @@ Blockly.JavaScript['lists_getIndex'] = function(block) { } } } else if (where == 'RANDOM') { - if (!Blockly.JavaScript.definitions_['lists_get_random_item']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'lists_get_random_item', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.lists_getIndex.random = functionName; - var func = []; - func.push('function ' + functionName + '(list, remove) {'); - func.push(' var x = Math.floor(Math.random() * list.length);'); - func.push(' if (remove) {'); - func.push(' return list.splice(x, 1)[0];'); - func.push(' } else {'); - func.push(' return list[x];'); - func.push(' }'); - func.push('}'); - Blockly.JavaScript.definitions_['lists_get_random_item'] = - func.join('\n'); - } - code = Blockly.JavaScript.lists_getIndex.random + - '(' + list + ', ' + (mode != 'GET') + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'lists_get_random_item', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(list, remove) {', + ' var x = Math.floor(Math.random() * list.length);', + ' if (remove) {', + ' return list.splice(x, 1)[0];', + ' } else {', + ' return list[x];', + ' }', + '}']); + code = functionName + '(' + list + ', ' + (mode != 'GET') + ')'; if (mode == 'GET' || mode == 'GET_REMOVE') { return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; } else if (mode == 'REMOVE') { @@ -288,35 +270,29 @@ Blockly.JavaScript['lists_getSublist'] = function(block) { if (where1 == 'FIRST' && where2 == 'LAST') { var code = list + '.concat()'; } else { - if (!Blockly.JavaScript.definitions_['lists_get_sublist']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'lists_get_sublist', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.lists_getSublist.func = functionName; - var func = []; - func.push('function ' + functionName + - '(list, where1, at1, where2, at2) {'); - func.push(' function getAt(where, at) {'); - func.push(' if (where == \'FROM_START\') {'); - func.push(' at--;'); - func.push(' } else if (where == \'FROM_END\') {'); - func.push(' at = list.length - at;'); - func.push(' } else if (where == \'FIRST\') {'); - func.push(' at = 0;'); - func.push(' } else if (where == \'LAST\') {'); - func.push(' at = list.length - 1;'); - func.push(' } else {'); - func.push(' throw \'Unhandled option (lists_getSublist).\';'); - func.push(' }'); - func.push(' return at;'); - func.push(' }'); - func.push(' at1 = getAt(where1, at1);'); - func.push(' at2 = getAt(where2, at2) + 1;'); - func.push(' return list.slice(at1, at2);'); - func.push('}'); - Blockly.JavaScript.definitions_['lists_get_sublist'] = - func.join('\n'); - } - var code = Blockly.JavaScript.lists_getSublist.func + '(' + list + ', \'' + + var functionName = Blockly.JavaScript.provideFunction_( + 'lists_get_sublist', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(list, where1, at1, where2, at2) {', + ' function getAt(where, at) {', + ' if (where == \'FROM_START\') {', + ' at--;', + ' } else if (where == \'FROM_END\') {', + ' at = list.length - at;', + ' } else if (where == \'FIRST\') {', + ' at = 0;', + ' } else if (where == \'LAST\') {', + ' at = list.length - 1;', + ' } else {', + ' throw \'Unhandled option (lists_getSublist).\';', + ' }', + ' return at;', + ' }', + ' at1 = getAt(where1, at1);', + ' at2 = getAt(where2, at2) + 1;', + ' return list.slice(at1, at2);', + '}']); + var code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; } return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; diff --git a/generators/javascript/math.js b/generators/javascript/math.js index feb94a5c3..15056f039 100644 --- a/generators/javascript/math.js +++ b/generators/javascript/math.js @@ -164,33 +164,28 @@ Blockly.JavaScript['math_number_property'] = function(block) { var code; if (dropdown_property == 'PRIME') { // Prime is a special case as it is not a one-liner test. - if (!Blockly.JavaScript.definitions_['isPrime']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'isPrime', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.logic_prime= functionName; - var func = []; - func.push('function ' + functionName + '(n) {'); - func.push(' // http://en.wikipedia.org/wiki/Primality_test#Naive_methods'); - func.push(' if (n == 2 || n == 3) {'); - func.push(' return true;'); - func.push(' }'); - func.push(' // False if n is NaN, negative, is 1, or not whole.'); - func.push(' // And false if n is divisible by 2 or 3.'); - func.push(' if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 ||' + - ' n % 3 == 0) {'); - func.push(' return false;'); - func.push(' }'); - func.push(' // Check all the numbers of form 6k +/- 1, up to sqrt(n).'); - func.push(' for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {'); - func.push(' if (n % (x - 1) == 0 || n % (x + 1) == 0) {'); - func.push(' return false;'); - func.push(' }'); - func.push(' }'); - func.push(' return true;'); - func.push('}'); - Blockly.JavaScript.definitions_['isPrime'] = func.join('\n'); - } - code = Blockly.JavaScript.logic_prime + '(' + number_to_check + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'math_isPrime', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '(n) {', + ' // https://en.wikipedia.org/wiki/Primality_test#Naive_methods', + ' if (n == 2 || n == 3) {', + ' return true;', + ' }', + ' // False if n is NaN, negative, is 1, or not whole.', + ' // And false if n is divisible by 2 or 3.', + ' if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 ||' + + ' n % 3 == 0) {', + ' return false;', + ' }', + ' // Check all the numbers of form 6k +/- 1, up to sqrt(n).', + ' for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {', + ' if (n % (x - 1) == 0 || n % (x + 1) == 0) {', + ' return false;', + ' }', + ' }', + ' return true;', + '}']); + code = functionName + '(' + number_to_check + ')'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; } switch (dropdown_property) { @@ -255,131 +250,107 @@ Blockly.JavaScript['math_on_list'] = function(block) { break; case 'AVERAGE': // math_median([null,null,1,3]) == 2.0. - if (!Blockly.JavaScript.definitions_['math_mean']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'math_mean', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.math_on_list.math_mean = functionName; - var func = []; - func.push('function ' + functionName + '(myList) {'); - func.push(' return myList.reduce(function(x, y) {return x + y;}) / ' + - 'myList.length;'); - func.push('}'); - Blockly.JavaScript.definitions_['math_mean'] = func.join('\n'); - } + var functionName = Blockly.JavaScript.provideFunction_( + 'math_mean', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(myList) {', + ' return myList.reduce(function(x, y) {return x + y;}) / ' + + 'myList.length;', + '}']); list = Blockly.JavaScript.valueToCode(block, 'LIST', Blockly.JavaScript.ORDER_NONE) || '[]'; - code = Blockly.JavaScript.math_on_list.math_mean + '(' + list + ')'; + code = functionName + '(' + list + ')'; break; case 'MEDIAN': // math_median([null,null,1,3]) == 2.0. - if (!Blockly.JavaScript.definitions_['math_median']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'math_median', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.math_on_list.math_median = functionName; - var func = []; - func.push('function ' + functionName + '(myList) {'); - func.push(' var localList = myList.filter(function (x) ' + - '{return typeof x == \'number\';});'); - func.push(' if (!localList.length) return null;'); - func.push(' localList.sort(function(a, b) {return b - a;});'); - func.push(' if (localList.length % 2 == 0) {'); - func.push(' return (localList[localList.length / 2 - 1] + ' + - 'localList[localList.length / 2]) / 2;'); - func.push(' } else {'); - func.push(' return localList[(localList.length - 1) / 2];'); - func.push(' }'); - func.push('}'); - Blockly.JavaScript.definitions_['math_median'] = func.join('\n'); - } + var functionName = Blockly.JavaScript.provideFunction_( + 'math_median', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(myList) {', + ' var localList = myList.filter(function (x) ' + + '{return typeof x == \'number\';});', + ' if (!localList.length) return null;', + ' localList.sort(function(a, b) {return b - a;});', + ' if (localList.length % 2 == 0) {', + ' return (localList[localList.length / 2 - 1] + ' + + 'localList[localList.length / 2]) / 2;', + ' } else {', + ' return localList[(localList.length - 1) / 2];', + ' }', + '}']); list = Blockly.JavaScript.valueToCode(block, 'LIST', Blockly.JavaScript.ORDER_NONE) || '[]'; - code = Blockly.JavaScript.math_on_list.math_median + '(' + list + ')'; + code = functionName + '(' + list + ')'; break; case 'MODE': - if (!Blockly.JavaScript.definitions_['math_modes']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'math_modes', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.math_on_list.math_modes = functionName; - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. - var func = []; - func.push('function ' + functionName + '(values) {'); - func.push(' var modes = [];'); - func.push(' var counts = [];'); - func.push(' var maxCount = 0;'); - func.push(' for (var i = 0; i < values.length; i++) {'); - func.push(' var value = values[i];'); - func.push(' var found = false;'); - func.push(' var thisCount;'); - func.push(' for (var j = 0; j < counts.length; j++) {'); - func.push(' if (counts[j][0] === value) {'); - func.push(' thisCount = ++counts[j][1];'); - func.push(' found = true;'); - func.push(' break;'); - func.push(' }'); - func.push(' }'); - func.push(' if (!found) {'); - func.push(' counts.push([value, 1]);'); - func.push(' thisCount = 1;'); - func.push(' }'); - func.push(' maxCount = Math.max(thisCount, maxCount);'); - func.push(' }'); - func.push(' for (var j = 0; j < counts.length; j++) {'); - func.push(' if (counts[j][1] == maxCount) {'); - func.push(' modes.push(counts[j][0]);'); - func.push(' }'); - func.push(' }'); - func.push(' return modes;'); - func.push('}'); - Blockly.JavaScript.definitions_['math_modes'] = func.join('\n'); - } + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. + var functionName = Blockly.JavaScript.provideFunction_( + 'math_modes', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(values) {', + ' var modes = [];', + ' var counts = [];', + ' var maxCount = 0;', + ' for (var i = 0; i < values.length; i++) {', + ' var value = values[i];', + ' var found = false;', + ' var thisCount;', + ' for (var j = 0; j < counts.length; j++) {', + ' if (counts[j][0] === value) {', + ' thisCount = ++counts[j][1];', + ' found = true;', + ' break;', + ' }', + ' }', + ' if (!found) {', + ' counts.push([value, 1]);', + ' thisCount = 1;', + ' }', + ' maxCount = Math.max(thisCount, maxCount);', + ' }', + ' for (var j = 0; j < counts.length; j++) {', + ' if (counts[j][1] == maxCount) {', + ' modes.push(counts[j][0]);', + ' }', + ' }', + ' return modes;', + '}']); list = Blockly.JavaScript.valueToCode(block, 'LIST', Blockly.JavaScript.ORDER_NONE) || '[]'; - code = Blockly.JavaScript.math_on_list.math_modes + '(' + list + ')'; + code = functionName + '(' + list + ')'; break; case 'STD_DEV': - if (!Blockly.JavaScript.definitions_['math_standard_deviation']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'math_standard_deviation', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.math_on_list.math_standard_deviation = functionName; - var func = []; - func.push('function ' + functionName + '(numbers) {'); - func.push(' var n = numbers.length;'); - func.push(' if (!n) return null;'); - func.push(' var mean = numbers.reduce(function(x, y) ' + - '{return x + y;}) / n;'); - func.push(' var variance = 0;'); - func.push(' for (var j = 0; j < n; j++) {'); - func.push(' variance += Math.pow(numbers[j] - mean, 2);'); - func.push(' }'); - func.push(' variance = variance / n;'); - func.push(' return Math.sqrt(variance);'); - func.push('}'); - Blockly.JavaScript.definitions_['math_standard_deviation'] = - func.join('\n'); - } + var functionName = Blockly.JavaScript.provideFunction_( + 'math_standard_deviation', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(numbers) {', + ' var n = numbers.length;', + ' if (!n) return null;', + ' var mean = numbers.reduce(function(x, y) {return x + y;}) / n;', + ' var variance = 0;', + ' for (var j = 0; j < n; j++) {', + ' variance += Math.pow(numbers[j] - mean, 2);', + ' }', + ' variance = variance / n;', + ' return Math.sqrt(variance);', + '}']); list = Blockly.JavaScript.valueToCode(block, 'LIST', Blockly.JavaScript.ORDER_NONE) || '[]'; - code = Blockly.JavaScript.math_on_list.math_standard_deviation + - '(' + list + ')'; + code = functionName + '(' + list + ')'; break; case 'RANDOM': - if (!Blockly.JavaScript.definitions_['math_random_item']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'math_random_item', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.math_on_list.math_random_item = functionName; - var func = []; - func.push('function ' + functionName + '(list) {'); - func.push(' var x = Math.floor(Math.random() * list.length);'); - func.push(' return list[x];'); - func.push('}'); - Blockly.JavaScript.definitions_['math_random_item'] = func.join('\n'); - } + var functionName = Blockly.JavaScript.provideFunction_( + 'math_random_list', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(list) {', + ' var x = Math.floor(Math.random() * list.length);', + ' return list[x];', + '}']); list = Blockly.JavaScript.valueToCode(block, 'LIST', Blockly.JavaScript.ORDER_NONE) || '[]'; - code = Blockly.JavaScript.math_on_list.math_random_item + - '(' + list + ')'; + code = functionName + '(' + list + ')'; break; default: throw 'Unknown operator: ' + func; @@ -416,24 +387,19 @@ Blockly.JavaScript['math_random_int'] = function(block) { Blockly.JavaScript.ORDER_COMMA) || '0'; var argument1 = Blockly.JavaScript.valueToCode(block, 'TO', Blockly.JavaScript.ORDER_COMMA) || '0'; - if (!Blockly.JavaScript.definitions_['math_random_int']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'math_random_int', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.math_random_int.random_function = functionName; - var func = []; - func.push('function ' + functionName + '(a, b) {'); - func.push(' if (a > b) {'); - func.push(' // Swap a and b to ensure a is smaller.'); - func.push(' var c = a;'); - func.push(' a = b;'); - func.push(' b = c;'); - func.push(' }'); - func.push(' return Math.floor(Math.random() * (b - a + 1) + a);'); - func.push('}'); - Blockly.JavaScript.definitions_['math_random_int'] = func.join('\n'); - } - var code = Blockly.JavaScript.math_random_int.random_function + - '(' + argument0 + ', ' + argument1 + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'math_random_int', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(a, b) {', + ' if (a > b) {', + ' // Swap a and b to ensure a is smaller.', + ' var c = a;', + ' a = b;', + ' b = c;', + ' }', + ' return Math.floor(Math.random() * (b - a + 1) + a);', + '}']); + var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; }; diff --git a/generators/javascript/text.js b/generators/javascript/text.js index 7def8364e..d37b44e34 100644 --- a/generators/javascript/text.js +++ b/generators/javascript/text.js @@ -127,19 +127,14 @@ Blockly.JavaScript['text_charAt'] = function(block) { var code = text + '.slice(-' + at + ').charAt(0)'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; case 'RANDOM': - if (!Blockly.JavaScript.definitions_['text_random_letter']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'text_random_letter', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.text_charAt.text_random_letter = functionName; - var func = []; - func.push('function ' + functionName + '(text) {'); - func.push(' var x = Math.floor(Math.random() * text.length);'); - func.push(' return text[x];'); - func.push('}'); - Blockly.JavaScript.definitions_['text_random_letter'] = func.join('\n'); - } - code = Blockly.JavaScript.text_charAt.text_random_letter + - '(' + text + ')'; + var functionName = Blockly.JavaScript.provideFunction_( + 'text_random_letter', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(text) {', + ' var x = Math.floor(Math.random() * text.length);', + ' return text[x];', + '}']); + code = functionName + '(' + text + ')'; return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; } throw 'Unhandled option (text_charAt).'; @@ -158,35 +153,29 @@ Blockly.JavaScript['text_getSubstring'] = function(block) { if (where1 == 'FIRST' && where2 == 'LAST') { var code = text; } else { - if (!Blockly.JavaScript.definitions_['text_get_substring']) { - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'text_get_substring', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.text_getSubstring.func = functionName; - var func = []; - func.push('function ' + functionName + - '(text, where1, at1, where2, at2) {'); - func.push(' function getAt(where, at) {'); - func.push(' if (where == \'FROM_START\') {'); - func.push(' at--;'); - func.push(' } else if (where == \'FROM_END\') {'); - func.push(' at = text.length - at;'); - func.push(' } else if (where == \'FIRST\') {'); - func.push(' at = 0;'); - func.push(' } else if (where == \'LAST\') {'); - func.push(' at = text.length - 1;'); - func.push(' } else {'); - func.push(' throw \'Unhandled option (text_getSubstring).\';'); - func.push(' }'); - func.push(' return at;'); - func.push(' }'); - func.push(' at1 = getAt(where1, at1);'); - func.push(' at2 = getAt(where2, at2) + 1;'); - func.push(' return text.slice(at1, at2);'); - func.push('}'); - Blockly.JavaScript.definitions_['text_get_substring'] = - func.join('\n'); - } - var code = Blockly.JavaScript.text_getSubstring.func + '(' + text + ', \'' + + var functionName = Blockly.JavaScript.provideFunction_( + 'text_get_substring', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(text, where1, at1, where2, at2) {', + ' function getAt(where, at) {', + ' if (where == \'FROM_START\') {', + ' at--;', + ' } else if (where == \'FROM_END\') {', + ' at = text.length - at;', + ' } else if (where == \'FIRST\') {', + ' at = 0;', + ' } else if (where == \'LAST\') {', + ' at = text.length - 1;', + ' } else {', + ' throw \'Unhandled option (text_getSubstring).\';', + ' }', + ' return at;', + ' }', + ' at1 = getAt(where1, at1);', + ' at2 = getAt(where2, at2) + 1;', + ' return text.slice(at1, at2);', + '}']); + var code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; } return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; @@ -207,23 +196,17 @@ Blockly.JavaScript['text_changeCase'] = function(block) { Blockly.JavaScript.ORDER_MEMBER) || '\'\''; code = argument0 + operator; } else { - if (!Blockly.JavaScript.definitions_['text_toTitleCase']) { - // Title case is not a native JavaScript function. Define one. - var functionName = Blockly.JavaScript.variableDB_.getDistinctName( - 'text_toTitleCase', Blockly.Generator.NAME_TYPE); - Blockly.JavaScript.text_changeCase.toTitleCase = functionName; - var func = []; - func.push('function ' + functionName + '(str) {'); - func.push(' return str.replace(/\\S+/g,'); - func.push(' function(txt) {return txt[0].toUpperCase() + ' + - 'txt.substring(1).toLowerCase();});'); - func.push('}'); - Blockly.JavaScript.definitions_['text_toTitleCase'] = func.join('\n'); - } + // Title case is not a native JavaScript function. Define one. + var functionName = Blockly.JavaScript.provideFunction_( + 'text_toTitleCase', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '(str) {', + ' return str.replace(/\\S+/g,', + ' function(txt) {return txt[0].toUpperCase() + ' + + 'txt.substring(1).toLowerCase();});', + '}']); var argument0 = Blockly.JavaScript.valueToCode(block, 'TEXT', Blockly.JavaScript.ORDER_NONE) || '\'\''; - code = Blockly.JavaScript.text_changeCase.toTitleCase + - '(' + argument0 + ')'; + code = functionName + '(' + argument0 + ')'; } return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL]; }; diff --git a/generators/python.js b/generators/python.js index 2a2bd283a..998a7ea82 100644 --- a/generators/python.js +++ b/generators/python.js @@ -82,16 +82,6 @@ Blockly.Python.ORDER_NONE = 99; // (...) */ Blockly.Python.INFINITE_LOOP_TRAP = null; -/** - * This is used as a placeholder in functions defined using - * Blockly.Python.provideFunction_. It must not be legal code that could - * legitimately appear in a function definition (or comment), and it must - * not confuse the regular expression parser. - */ -Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ = '{{{}}}'; -Blockly.Python.FUNCTION_NAME_PLACEHOLDER_REGEXP_ = - new RegExp(Blockly.Python.FUNCTION_NAME_PLACEHOLDER_, 'g'); - /** * Initialise the database of variable names. */ @@ -207,31 +197,3 @@ Blockly.Python.scrub_ = function(block, code) { var nextCode = this.blockToCode(nextBlock); return commentCode + code + nextCode; }; - -/** - * Define a function to be included in the generated code. - * The first time this is called with a given desiredName, the code is - * saved and an actual name is generated. Subsequent calls with the - * same desiredName have no effect but have the same return value. - * - * It is up to the caller to make sure the same desiredName is not - * used for different code values. - * - * The code gets output when Blockly.Python.finish() is called. - * - * @param {string} desiredName The desired name of the function (e.g., isPrime). - * @param {code} A list of Python statements. - * @return {string} The actual name of the new function. This may differ - * from desiredName if the former has already been taken by the user. - * @private - */ -Blockly.Python.provideFunction_ = function(desiredName, code) { - if (!Blockly.Python.definitions_[desiredName]) { - var functionName = Blockly.Python.variableDB_.getDistinctName( - desiredName, Blockly.Generator.NAME_TYPE); - Blockly.Python.functionNames_[desiredName] = functionName; - Blockly.Python.definitions_[desiredName] = code.join('\n').replace( - Blockly.Python.FUNCTION_NAME_PLACEHOLDER_REGEXP_, functionName); - } - return Blockly.Python.functionNames_[desiredName]; -}; diff --git a/generators/python/colour.js b/generators/python/colour.js index a6142f220..bb1d21181 100644 --- a/generators/python/colour.js +++ b/generators/python/colour.js @@ -42,7 +42,7 @@ Blockly.Python['colour_random'] = function(block) { }; Blockly.Python['colour_rgb'] = function(block) { - // Compose a colour from RGB components. + // Compose a colour from RGB components expressed as percentages. var functionName = Blockly.Python.provideFunction_( 'colour_rgb', [ 'def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + '(r, g, b):', diff --git a/generators/python/math.js b/generators/python/math.js index 6e39204ef..62f825fb2 100644 --- a/generators/python/math.js +++ b/generators/python/math.js @@ -170,9 +170,9 @@ Blockly.Python['math_number_property'] = function(block) { if (dropdown_property == 'PRIME') { Blockly.Python.definitions_['import_math'] = 'import math'; var functionName = Blockly.Python.provideFunction_( - 'isPrime', + 'math_isPrime', ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + '(n):', - ' # http://en.wikipedia.org/wiki/Primality_test#Naive_methods', + ' # https://en.wikipedia.org/wiki/Primality_test#Naive_methods', ' # If n is not a number but a string, try parsing it.', ' if type(n) not in (int, float, long):', ' try:', diff --git a/javascript_compressed.js b/javascript_compressed.js index caa854652..71e5ae05a 100644 --- a/javascript_compressed.js +++ b/javascript_compressed.js @@ -5,82 +5,73 @@ Blockly.JavaScript=new Blockly.Generator("JavaScript");Blockly.JavaScript.addRes Blockly.JavaScript.ORDER_ATOMIC=0;Blockly.JavaScript.ORDER_MEMBER=1;Blockly.JavaScript.ORDER_NEW=1;Blockly.JavaScript.ORDER_FUNCTION_CALL=2;Blockly.JavaScript.ORDER_INCREMENT=3;Blockly.JavaScript.ORDER_DECREMENT=3;Blockly.JavaScript.ORDER_LOGICAL_NOT=4;Blockly.JavaScript.ORDER_BITWISE_NOT=4;Blockly.JavaScript.ORDER_UNARY_PLUS=4;Blockly.JavaScript.ORDER_UNARY_NEGATION=4;Blockly.JavaScript.ORDER_TYPEOF=4;Blockly.JavaScript.ORDER_VOID=4;Blockly.JavaScript.ORDER_DELETE=4; Blockly.JavaScript.ORDER_MULTIPLICATION=5;Blockly.JavaScript.ORDER_DIVISION=5;Blockly.JavaScript.ORDER_MODULUS=5;Blockly.JavaScript.ORDER_ADDITION=6;Blockly.JavaScript.ORDER_SUBTRACTION=6;Blockly.JavaScript.ORDER_BITWISE_SHIFT=7;Blockly.JavaScript.ORDER_RELATIONAL=8;Blockly.JavaScript.ORDER_IN=8;Blockly.JavaScript.ORDER_INSTANCEOF=8;Blockly.JavaScript.ORDER_EQUALITY=9;Blockly.JavaScript.ORDER_BITWISE_AND=10;Blockly.JavaScript.ORDER_BITWISE_XOR=11;Blockly.JavaScript.ORDER_BITWISE_OR=12; Blockly.JavaScript.ORDER_LOGICAL_AND=13;Blockly.JavaScript.ORDER_LOGICAL_OR=14;Blockly.JavaScript.ORDER_CONDITIONAL=15;Blockly.JavaScript.ORDER_ASSIGNMENT=16;Blockly.JavaScript.ORDER_COMMA=17;Blockly.JavaScript.ORDER_NONE=99;Blockly.JavaScript.INFINITE_LOOP_TRAP=null; -Blockly.JavaScript.init=function(){Blockly.JavaScript.definitions_=Object.create(null);if(Blockly.Variables){Blockly.JavaScript.variableDB_?Blockly.JavaScript.variableDB_.reset():Blockly.JavaScript.variableDB_=new Blockly.Names(Blockly.JavaScript.RESERVED_WORDS_);for(var a=[],b=Blockly.Variables.allVariables(),c=0;c",GTE:">="}[a.getFieldValue("OP")],c="=="==b||"!="==b?Blockly.JavaScript.ORDER_EQUALITY:Blockly.JavaScript.ORDER_RELATIONAL,d=Blockly.JavaScript.valueToCode(a,"A",c)||"0";a=Blockly.JavaScript.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -Blockly.JavaScript.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"&&":"||",c="&&"==b?Blockly.JavaScript.ORDER_LOGICAL_AND:Blockly.JavaScript.ORDER_LOGICAL_OR,d=Blockly.JavaScript.valueToCode(a,"A",c);a=Blockly.JavaScript.valueToCode(a,"B",c);if(d||a){var e="&&"==b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]}; -Blockly.JavaScript.logic_negate=function(a){var b=Blockly.JavaScript.ORDER_LOGICAL_NOT;return["!"+(Blockly.JavaScript.valueToCode(a,"BOOL",b)||"true"),b]};Blockly.JavaScript.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"true":"false",Blockly.JavaScript.ORDER_ATOMIC]};Blockly.JavaScript.logic_null=function(a){return["null",Blockly.JavaScript.ORDER_ATOMIC]}; -Blockly.JavaScript.logic_ternary=function(a){var b=Blockly.JavaScript.valueToCode(a,"IF",Blockly.JavaScript.ORDER_CONDITIONAL)||"false",c=Blockly.JavaScript.valueToCode(a,"THEN",Blockly.JavaScript.ORDER_CONDITIONAL)||"null";a=Blockly.JavaScript.valueToCode(a,"ELSE",Blockly.JavaScript.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,Blockly.JavaScript.ORDER_CONDITIONAL]};Blockly.JavaScript.loops={};Blockly.JavaScript.controls_repeat=function(a){var b=Number(a.getFieldValue("TIMES")),c=Blockly.JavaScript.statementToCode(a,"DO");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(c=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+c);a=Blockly.JavaScript.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE);return"for (var "+a+" = 0; "+a+" < "+b+"; "+a+"++) {\n"+c+"}\n"}; -Blockly.JavaScript.controls_repeat_ext=function(a){var b=Blockly.JavaScript.valueToCode(a,"TIMES",Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",c=Blockly.JavaScript.statementToCode(a,"DO");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(c=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+c);a="";var d=Blockly.JavaScript.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE),e=b;b.match(/^\w+$/)||Blockly.isNumber(b)||(e=Blockly.JavaScript.variableDB_.getDistinctName("repeat_end",Blockly.Variables.NAME_TYPE), -a+="var "+e+" = "+b+";\n");return a+("for (var "+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")}; -Blockly.JavaScript.controls_whileUntil=function(a){var b="UNTIL"==a.getFieldValue("MODE"),c=Blockly.JavaScript.valueToCode(a,"BOOL",b?Blockly.JavaScript.ORDER_LOGICAL_NOT:Blockly.JavaScript.ORDER_NONE)||"false",d=Blockly.JavaScript.statementToCode(a,"DO");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(d=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+d);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; -Blockly.JavaScript.controls_for=function(a){var b=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.JavaScript.valueToCode(a,"FROM",Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",d=Blockly.JavaScript.valueToCode(a,"TO",Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",e=Blockly.JavaScript.valueToCode(a,"BY",Blockly.JavaScript.ORDER_ASSIGNMENT)||"1",g=Blockly.JavaScript.statementToCode(a,"DO");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(g=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g, -"'"+a.id+"'")+g);if(Blockly.isNumber(c)&&Blockly.isNumber(d)&&Blockly.isNumber(e)){var f=parseFloat(c)<=parseFloat(d);a="for ("+b+" = "+c+"; "+b+(f?" <= ":" >= ")+d+"; "+b;b=Math.abs(parseFloat(e));a=(1==b?a+(f?"++":"--"):a+((f?" += ":" -= ")+b))+(") {\n"+g+"}\n")}else a="",f=c,c.match(/^\w+$/)||Blockly.isNumber(c)||(f=Blockly.JavaScript.variableDB_.getDistinctName(b+"_start",Blockly.Variables.NAME_TYPE),a+="var "+f+" = "+c+";\n"),c=d,d.match(/^\w+$/)||Blockly.isNumber(d)||(c=Blockly.JavaScript.variableDB_.getDistinctName(b+ -"_end",Blockly.Variables.NAME_TYPE),a+="var "+c+" = "+d+";\n"),d=Blockly.JavaScript.variableDB_.getDistinctName(b+"_inc",Blockly.Variables.NAME_TYPE),a+="var "+d+" = ",a=Blockly.isNumber(e)?a+(Math.abs(e)+";\n"):a+("Math.abs("+e+");\n"),a+="if ("+f+" > "+c+") {\n",a+=" "+d+" = -"+d+";\n",a+="}\n",a+="for ("+b+" = "+f+";\n "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+";\n "+b+" += "+d+") {\n"+g+"}\n";return a}; -Blockly.JavaScript.controls_forEach=function(a){var b=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_ASSIGNMENT)||"[]",d=Blockly.JavaScript.statementToCode(a,"DO");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(d=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+d);a=Blockly.JavaScript.variableDB_.getDistinctName(b+"_index",Blockly.Variables.NAME_TYPE);if(c.match(/^\w+$/))b="for (var "+ -a+" in "+c+") {\n"+(" "+b+" = "+c+"["+a+"];\n"+d)+"}\n";else var e=Blockly.JavaScript.variableDB_.getDistinctName(b+"_list",Blockly.Variables.NAME_TYPE),d=" "+b+" = "+e+"["+a+"];\n"+d,b="var "+e+" = "+c+";\nfor (var "+a+" in "+e+") {\n"+d+"}\n";return b};Blockly.JavaScript.controls_flow_statements=function(a){switch(a.getFieldValue("FLOW")){case "BREAK":return"break;\n";case "CONTINUE":return"continue;\n"}throw"Unknown flow statement.";};Blockly.JavaScript.math={};Blockly.JavaScript.math_number=function(a){return[parseFloat(a.getFieldValue("NUM")),Blockly.JavaScript.ORDER_ATOMIC]}; -Blockly.JavaScript.math_arithmetic=function(a){var b={ADD:[" + ",Blockly.JavaScript.ORDER_ADDITION],MINUS:[" - ",Blockly.JavaScript.ORDER_SUBTRACTION],MULTIPLY:[" * ",Blockly.JavaScript.ORDER_MULTIPLICATION],DIVIDE:[" / ",Blockly.JavaScript.ORDER_DIVISION],POWER:[null,Blockly.JavaScript.ORDER_COMMA]}[a.getFieldValue("OP")],c=b[0],b=b[1],d=Blockly.JavaScript.valueToCode(a,"A",b)||"0";a=Blockly.JavaScript.valueToCode(a,"B",b)||"0";return c?[d+c+a,b]:["Math.pow("+d+", "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -Blockly.JavaScript.math_single=function(a){var b=a.getFieldValue("OP"),c;if("NEG"==b)return a=Blockly.JavaScript.valueToCode(a,"NUM",Blockly.JavaScript.ORDER_UNARY_NEGATION)||"0","-"==a[0]&&(a=" "+a),["-"+a,Blockly.JavaScript.ORDER_UNARY_NEGATION];a="SIN"==b||"COS"==b||"TAN"==b?Blockly.JavaScript.valueToCode(a,"NUM",Blockly.JavaScript.ORDER_DIVISION)||"0":Blockly.JavaScript.valueToCode(a,"NUM",Blockly.JavaScript.ORDER_NONE)||"0";switch(b){case "ABS":c="Math.abs("+a+")";break;case "ROOT":c="Math.sqrt("+ -a+")";break;case "LN":c="Math.log("+a+")";break;case "EXP":c="Math.exp("+a+")";break;case "POW10":c="Math.pow(10,"+a+")";break;case "ROUND":c="Math.round("+a+")";break;case "ROUNDUP":c="Math.ceil("+a+")";break;case "ROUNDDOWN":c="Math.floor("+a+")";break;case "SIN":c="Math.sin("+a+" / 180 * Math.PI)";break;case "COS":c="Math.cos("+a+" / 180 * Math.PI)";break;case "TAN":c="Math.tan("+a+" / 180 * Math.PI)"}if(c)return[c,Blockly.JavaScript.ORDER_FUNCTION_CALL];switch(b){case "LOG10":c="Math.log("+a+ -") / Math.log(10)";break;case "ASIN":c="Math.asin("+a+") / Math.PI * 180";break;case "ACOS":c="Math.acos("+a+") / Math.PI * 180";break;case "ATAN":c="Math.atan("+a+") / Math.PI * 180";break;default:throw"Unknown math operator: "+b;}return[c,Blockly.JavaScript.ORDER_DIVISION]}; -Blockly.JavaScript.math_constant=function(a){return{PI:["Math.PI",Blockly.JavaScript.ORDER_MEMBER],E:["Math.E",Blockly.JavaScript.ORDER_MEMBER],GOLDEN_RATIO:["(1 + Math.sqrt(5)) / 2",Blockly.JavaScript.ORDER_DIVISION],SQRT2:["Math.SQRT2",Blockly.JavaScript.ORDER_MEMBER],SQRT1_2:["Math.SQRT1_2",Blockly.JavaScript.ORDER_MEMBER],INFINITY:["Infinity",Blockly.JavaScript.ORDER_ATOMIC]}[a.getFieldValue("CONSTANT")]}; -Blockly.JavaScript.math_number_property=function(a){var b=Blockly.JavaScript.valueToCode(a,"NUMBER_TO_CHECK",Blockly.JavaScript.ORDER_MODULUS)||"0",c=a.getFieldValue("PROPERTY"),d;if("PRIME"==c)return Blockly.JavaScript.definitions_.isPrime||(a=Blockly.JavaScript.variableDB_.getDistinctName("isPrime",Blockly.Generator.NAME_TYPE),Blockly.JavaScript.logic_prime=a,c=[],c.push("function "+a+"(n) {"),c.push(" // http://en.wikipedia.org/wiki/Primality_test#Naive_methods"),c.push(" if (n == 2 || n == 3) {"), -c.push(" return true;"),c.push(" }"),c.push(" // False if n is NaN, negative, is 1, or not whole."),c.push(" // And false if n is divisible by 2 or 3."),c.push(" if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) {"),c.push(" return false;"),c.push(" }"),c.push(" // Check all the numbers of form 6k +/- 1, up to sqrt(n)."),c.push(" for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {"),c.push(" if (n % (x - 1) == 0 || n % (x + 1) == 0) {"),c.push(" return false;"),c.push(" }"), -c.push(" }"),c.push(" return true;"),c.push("}"),Blockly.JavaScript.definitions_.isPrime=c.join("\n")),d=Blockly.JavaScript.logic_prime+"("+b+")",[d,Blockly.JavaScript.ORDER_FUNCTION_CALL];switch(c){case "EVEN":d=b+" % 2 == 0";break;case "ODD":d=b+" % 2 == 1";break;case "WHOLE":d=b+" % 1 == 0";break;case "POSITIVE":d=b+" > 0";break;case "NEGATIVE":d=b+" < 0";break;case "DIVISIBLE_BY":a=Blockly.JavaScript.valueToCode(a,"DIVISOR",Blockly.JavaScript.ORDER_MODULUS)||"0",d=b+" % "+a+" == 0"}return[d, -Blockly.JavaScript.ORDER_EQUALITY]};Blockly.JavaScript.math_change=function(a){var b=Blockly.JavaScript.valueToCode(a,"DELTA",Blockly.JavaScript.ORDER_ADDITION)||"0";a=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE);return a+" = (typeof "+a+" == 'number' ? "+a+" : 0) + "+b+";\n"};Blockly.JavaScript.math_round=Blockly.JavaScript.math_single;Blockly.JavaScript.math_trig=Blockly.JavaScript.math_single; -Blockly.JavaScript.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_MEMBER)||"[]";a+=".reduce(function(x, y) {return x + y;})";break;case "MIN":a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_COMMA)||"[]";a="Math.min.apply(null, "+a+")";break;case "MAX":a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_COMMA)||"[]";a="Math.max.apply(null, "+a+")";break;case "AVERAGE":if(!Blockly.JavaScript.definitions_.math_mean){var c= -Blockly.JavaScript.variableDB_.getDistinctName("math_mean",Blockly.Generator.NAME_TYPE);Blockly.JavaScript.math_on_list.math_mean=c;b=[];b.push("function "+c+"(myList) {");b.push(" return myList.reduce(function(x, y) {return x + y;}) / myList.length;");b.push("}");Blockly.JavaScript.definitions_.math_mean=b.join("\n")}a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=Blockly.JavaScript.math_on_list.math_mean+"("+a+")";break;case "MEDIAN":Blockly.JavaScript.definitions_.math_median|| -(c=Blockly.JavaScript.variableDB_.getDistinctName("math_median",Blockly.Generator.NAME_TYPE),Blockly.JavaScript.math_on_list.math_median=c,b=[],b.push("function "+c+"(myList) {"),b.push(" var localList = myList.filter(function (x) {return typeof x == 'number';});"),b.push(" if (!localList.length) return null;"),b.push(" localList.sort(function(a, b) {return b - a;});"),b.push(" if (localList.length % 2 == 0) {"),b.push(" return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;"), -b.push(" } else {"),b.push(" return localList[(localList.length - 1) / 2];"),b.push(" }"),b.push("}"),Blockly.JavaScript.definitions_.math_median=b.join("\n"));a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=Blockly.JavaScript.math_on_list.math_median+"("+a+")";break;case "MODE":Blockly.JavaScript.definitions_.math_modes||(c=Blockly.JavaScript.variableDB_.getDistinctName("math_modes",Blockly.Generator.NAME_TYPE),Blockly.JavaScript.math_on_list.math_modes=c,b= -[],b.push("function "+c+"(values) {"),b.push(" var modes = [];"),b.push(" var counts = [];"),b.push(" var maxCount = 0;"),b.push(" for (var i = 0; i < values.length; i++) {"),b.push(" var value = values[i];"),b.push(" var found = false;"),b.push(" var thisCount;"),b.push(" for (var j = 0; j < counts.length; j++) {"),b.push(" if (counts[j][0] === value) {"),b.push(" thisCount = ++counts[j][1];"),b.push(" found = true;"),b.push(" break;"),b.push(" }"), -b.push(" }"),b.push(" if (!found) {"),b.push(" counts.push([value, 1]);"),b.push(" thisCount = 1;"),b.push(" }"),b.push(" maxCount = Math.max(thisCount, maxCount);"),b.push(" }"),b.push(" for (var j = 0; j < counts.length; j++) {"),b.push(" if (counts[j][1] == maxCount) {"),b.push(" modes.push(counts[j][0]);"),b.push(" }"),b.push(" }"),b.push(" return modes;"),b.push("}"),Blockly.JavaScript.definitions_.math_modes=b.join("\n"));a=Blockly.JavaScript.valueToCode(a, -"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=Blockly.JavaScript.math_on_list.math_modes+"("+a+")";break;case "STD_DEV":Blockly.JavaScript.definitions_.math_standard_deviation||(c=Blockly.JavaScript.variableDB_.getDistinctName("math_standard_deviation",Blockly.Generator.NAME_TYPE),Blockly.JavaScript.math_on_list.math_standard_deviation=c,b=[],b.push("function "+c+"(numbers) {"),b.push(" var n = numbers.length;"),b.push(" if (!n) return null;"),b.push(" var mean = numbers.reduce(function(x, y) {return x + y;}) / n;"), -b.push(" var variance = 0;"),b.push(" for (var j = 0; j < n; j++) {"),b.push(" variance += Math.pow(numbers[j] - mean, 2);"),b.push(" }"),b.push(" variance = variance / n;"),b.push(" return Math.sqrt(variance);"),b.push("}"),Blockly.JavaScript.definitions_.math_standard_deviation=b.join("\n"));a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=Blockly.JavaScript.math_on_list.math_standard_deviation+"("+a+")";break;case "RANDOM":Blockly.JavaScript.definitions_.math_random_item|| -(c=Blockly.JavaScript.variableDB_.getDistinctName("math_random_item",Blockly.Generator.NAME_TYPE),Blockly.JavaScript.math_on_list.math_random_item=c,b=[],b.push("function "+c+"(list) {"),b.push(" var x = Math.floor(Math.random() * list.length);"),b.push(" return list[x];"),b.push("}"),Blockly.JavaScript.definitions_.math_random_item=b.join("\n"));a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=Blockly.JavaScript.math_on_list.math_random_item+"("+a+")";break;default:throw"Unknown operator: "+ -b;}return[a,Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.math_modulo=function(a){var b=Blockly.JavaScript.valueToCode(a,"DIVIDEND",Blockly.JavaScript.ORDER_MODULUS)||"0";a=Blockly.JavaScript.valueToCode(a,"DIVISOR",Blockly.JavaScript.ORDER_MODULUS)||"0";return[b+" % "+a,Blockly.JavaScript.ORDER_MODULUS]}; -Blockly.JavaScript.math_constrain=function(a){var b=Blockly.JavaScript.valueToCode(a,"VALUE",Blockly.JavaScript.ORDER_COMMA)||"0",c=Blockly.JavaScript.valueToCode(a,"LOW",Blockly.JavaScript.ORDER_COMMA)||"0";a=Blockly.JavaScript.valueToCode(a,"HIGH",Blockly.JavaScript.ORDER_COMMA)||"Infinity";return["Math.min(Math.max("+b+", "+c+"), "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -Blockly.JavaScript.math_random_int=function(a){var b=Blockly.JavaScript.valueToCode(a,"FROM",Blockly.JavaScript.ORDER_COMMA)||"0";a=Blockly.JavaScript.valueToCode(a,"TO",Blockly.JavaScript.ORDER_COMMA)||"0";if(!Blockly.JavaScript.definitions_.math_random_int){var c=Blockly.JavaScript.variableDB_.getDistinctName("math_random_int",Blockly.Generator.NAME_TYPE);Blockly.JavaScript.math_random_int.random_function=c;var d=[];d.push("function "+c+"(a, b) {");d.push(" if (a > b) {");d.push(" // Swap a and b to ensure a is smaller."); -d.push(" var c = a;");d.push(" a = b;");d.push(" b = c;");d.push(" }");d.push(" return Math.floor(Math.random() * (b - a + 1) + a);");d.push("}");Blockly.JavaScript.definitions_.math_random_int=d.join("\n")}return[Blockly.JavaScript.math_random_int.random_function+"("+b+", "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.math_random_float=function(a){return["Math.random()",Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.procedures={}; -Blockly.JavaScript.procedures_defreturn=function(a){var b=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("NAME"),Blockly.Procedures.NAME_TYPE),c=Blockly.JavaScript.statementToCode(a,"STACK");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(c=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+c);var d=Blockly.JavaScript.valueToCode(a,"RETURN",Blockly.JavaScript.ORDER_NONE)||"";d&&(d=" return "+d+";\n");for(var e=[],g=0;g 0";break;case "NEGATIVE":d=b+" < 0";break;case "DIVISIBLE_BY":a=Blockly.JavaScript.valueToCode(a,"DIVISOR",Blockly.JavaScript.ORDER_MODULUS)||"0",d=b+" % "+a+" == 0"}return[d,Blockly.JavaScript.ORDER_EQUALITY]};Blockly.JavaScript.math_change=function(a){var b=Blockly.JavaScript.valueToCode(a,"DELTA",Blockly.JavaScript.ORDER_ADDITION)||"0";a=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE);return a+" = (typeof "+a+" == 'number' ? "+a+" : 0) + "+b+";\n"}; +Blockly.JavaScript.math_round=Blockly.JavaScript.math_single;Blockly.JavaScript.math_trig=Blockly.JavaScript.math_single; +Blockly.JavaScript.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_MEMBER)||"[]";a+=".reduce(function(x, y) {return x + y;})";break;case "MIN":a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_COMMA)||"[]";a="Math.min.apply(null, "+a+")";break;case "MAX":a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_COMMA)||"[]";a="Math.max.apply(null, "+a+")";break;case "AVERAGE":b=Blockly.JavaScript.provideFunction_("math_mean", +["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(myList) {"," return myList.reduce(function(x, y) {return x + y;}) / myList.length;","}"]);a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MEDIAN":b=Blockly.JavaScript.provideFunction_("math_median",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(myList) {"," var localList = myList.filter(function (x) {return typeof x == 'number';});"," if (!localList.length) return null;", +" localList.sort(function(a, b) {return b - a;});"," if (localList.length % 2 == 0) {"," return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;"," } else {"," return localList[(localList.length - 1) / 2];"," }","}"]);a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=Blockly.JavaScript.provideFunction_("math_modes",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(values) {"," var modes = [];", +" var counts = [];"," var maxCount = 0;"," for (var i = 0; i < values.length; i++) {"," var value = values[i];"," var found = false;"," var thisCount;"," for (var j = 0; j < counts.length; j++) {"," if (counts[j][0] === value) {"," thisCount = ++counts[j][1];"," found = true;"," break;"," }"," }"," if (!found) {"," counts.push([value, 1]);"," thisCount = 1;"," }"," maxCount = Math.max(thisCount, maxCount);"," }"," for (var j = 0; j < counts.length; j++) {", +" if (counts[j][1] == maxCount) {"," modes.push(counts[j][0]);"," }"," }"," return modes;","}"]);a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "STD_DEV":b=Blockly.JavaScript.provideFunction_("math_standard_deviation",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(numbers) {"," var n = numbers.length;"," if (!n) return null;"," var mean = numbers.reduce(function(x, y) {return x + y;}) / n;"," var variance = 0;", +" for (var j = 0; j < n; j++) {"," variance += Math.pow(numbers[j] - mean, 2);"," }"," variance = variance / n;"," return Math.sqrt(variance);","}"]);a=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b=Blockly.JavaScript.provideFunction_("math_random_list",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(list) {"," var x = Math.floor(Math.random() * list.length);"," return list[x];","}"]);a=Blockly.JavaScript.valueToCode(a, +"LIST",Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw"Unknown operator: "+b;}return[a,Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.math_modulo=function(a){var b=Blockly.JavaScript.valueToCode(a,"DIVIDEND",Blockly.JavaScript.ORDER_MODULUS)||"0";a=Blockly.JavaScript.valueToCode(a,"DIVISOR",Blockly.JavaScript.ORDER_MODULUS)||"0";return[b+" % "+a,Blockly.JavaScript.ORDER_MODULUS]}; +Blockly.JavaScript.math_constrain=function(a){var b=Blockly.JavaScript.valueToCode(a,"VALUE",Blockly.JavaScript.ORDER_COMMA)||"0",c=Blockly.JavaScript.valueToCode(a,"LOW",Blockly.JavaScript.ORDER_COMMA)||"0";a=Blockly.JavaScript.valueToCode(a,"HIGH",Blockly.JavaScript.ORDER_COMMA)||"Infinity";return["Math.min(Math.max("+b+", "+c+"), "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +Blockly.JavaScript.math_random_int=function(a){var b=Blockly.JavaScript.valueToCode(a,"FROM",Blockly.JavaScript.ORDER_COMMA)||"0";a=Blockly.JavaScript.valueToCode(a,"TO",Blockly.JavaScript.ORDER_COMMA)||"0";return[Blockly.JavaScript.provideFunction_("math_random_int",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(a, b) {"," if (a > b) {"," // Swap a and b to ensure a is smaller."," var c = a;"," a = b;"," b = c;"," }"," return Math.floor(Math.random() * (b - a + 1) + a);", +"}"])+"("+b+", "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.math_random_float=function(a){return["Math.random()",Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.procedures={}; +Blockly.JavaScript.procedures_defreturn=function(a){var b=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("NAME"),Blockly.Procedures.NAME_TYPE),c=Blockly.JavaScript.statementToCode(a,"STACK");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(c=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+c);var d=Blockly.JavaScript.valueToCode(a,"RETURN",Blockly.JavaScript.ORDER_NONE)||"";d&&(d=" return "+d+";\n");for(var e=[],f=0;f",GTE:">="}[a.getFieldValue("OP")],c="=="==b||"!="==b?Blockly.JavaScript.ORDER_EQUALITY:Blockly.JavaScript.ORDER_RELATIONAL,d=Blockly.JavaScript.valueToCode(a,"A",c)||"0";a=Blockly.JavaScript.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +Blockly.JavaScript.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"&&":"||",c="&&"==b?Blockly.JavaScript.ORDER_LOGICAL_AND:Blockly.JavaScript.ORDER_LOGICAL_OR,d=Blockly.JavaScript.valueToCode(a,"A",c);a=Blockly.JavaScript.valueToCode(a,"B",c);if(d||a){var e="&&"==b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]}; +Blockly.JavaScript.logic_negate=function(a){var b=Blockly.JavaScript.ORDER_LOGICAL_NOT;return["!"+(Blockly.JavaScript.valueToCode(a,"BOOL",b)||"true"),b]};Blockly.JavaScript.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"true":"false",Blockly.JavaScript.ORDER_ATOMIC]};Blockly.JavaScript.logic_null=function(a){return["null",Blockly.JavaScript.ORDER_ATOMIC]}; +Blockly.JavaScript.logic_ternary=function(a){var b=Blockly.JavaScript.valueToCode(a,"IF",Blockly.JavaScript.ORDER_CONDITIONAL)||"false",c=Blockly.JavaScript.valueToCode(a,"THEN",Blockly.JavaScript.ORDER_CONDITIONAL)||"null";a=Blockly.JavaScript.valueToCode(a,"ELSE",Blockly.JavaScript.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,Blockly.JavaScript.ORDER_CONDITIONAL]};Blockly.JavaScript.lists={};Blockly.JavaScript.lists_create_empty=function(a){return["[]",Blockly.JavaScript.ORDER_ATOMIC]};Blockly.JavaScript.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c= ")+d+"; "+b;b=Math.abs(parseFloat(e));a=(1==b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||Blockly.isNumber(c)||(g=Blockly.JavaScript.variableDB_.getDistinctName(b+"_start",Blockly.Variables.NAME_TYPE),a+="var "+g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||Blockly.isNumber(d)||(c=Blockly.JavaScript.variableDB_.getDistinctName(b+ +"_end",Blockly.Variables.NAME_TYPE),a+="var "+c+" = "+d+";\n"),d=Blockly.JavaScript.variableDB_.getDistinctName(b+"_inc",Blockly.Variables.NAME_TYPE),a+="var "+d+" = ",a=Blockly.isNumber(e)?a+(Math.abs(e)+";\n"):a+("Math.abs("+e+");\n"),a+="if ("+g+" > "+c+") {\n",a+=" "+d+" = -"+d+";\n",a+="}\n",a+="for ("+b+" = "+g+";\n "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+";\n "+b+" += "+d+") {\n"+f+"}\n";return a}; +Blockly.JavaScript.controls_forEach=function(a){var b=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.JavaScript.valueToCode(a,"LIST",Blockly.JavaScript.ORDER_ASSIGNMENT)||"[]",d=Blockly.JavaScript.statementToCode(a,"DO");Blockly.JavaScript.INFINITE_LOOP_TRAP&&(d=Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+d);a=Blockly.JavaScript.variableDB_.getDistinctName(b+"_index",Blockly.Variables.NAME_TYPE);if(c.match(/^\w+$/))b="for (var "+ +a+" in "+c+") {\n"+(" "+b+" = "+c+"["+a+"];\n"+d)+"}\n";else var e=Blockly.JavaScript.variableDB_.getDistinctName(b+"_list",Blockly.Variables.NAME_TYPE),d=" "+b+" = "+e+"["+a+"];\n"+d,b="var "+e+" = "+c+";\nfor (var "+a+" in "+e+") {\n"+d+"}\n";return b};Blockly.JavaScript.controls_flow_statements=function(a){switch(a.getFieldValue("FLOW")){case "BREAK":return"break;\n";case "CONTINUE":return"continue;\n"}throw"Unknown flow statement.";};Blockly.JavaScript.colour={};Blockly.JavaScript.colour_picker=function(a){return["'"+a.getFieldValue("COLOUR")+"'",Blockly.JavaScript.ORDER_ATOMIC]};Blockly.JavaScript.colour_random=function(a){return[Blockly.JavaScript.provideFunction_("colour_random",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"() {"," var num = Math.floor(Math.random() * Math.pow(2, 24));"," return '#' + ('00000' + num.toString(16)).substr(-6);","}"])+"()",Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +Blockly.JavaScript.colour_rgb=function(a){var b=Blockly.JavaScript.valueToCode(a,"RED",Blockly.JavaScript.ORDER_COMMA)||0,c=Blockly.JavaScript.valueToCode(a,"GREEN",Blockly.JavaScript.ORDER_COMMA)||0;a=Blockly.JavaScript.valueToCode(a,"BLUE",Blockly.JavaScript.ORDER_COMMA)||0;return[Blockly.JavaScript.provideFunction_("colour_rgb",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(r, g, b) {"," r = Math.max(Math.min(Number(r), 100), 0) * 2.55;"," g = Math.max(Math.min(Number(g), 100), 0) * 2.55;", +" b = Math.max(Math.min(Number(b), 100), 0) * 2.55;"," r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2);"," g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2);"," b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2);"," return '#' + r + g + b;","}"])+"("+b+", "+c+", "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +Blockly.JavaScript.colour_blend=function(a){var b=Blockly.JavaScript.valueToCode(a,"COLOUR1",Blockly.JavaScript.ORDER_COMMA)||"'#000000'",c=Blockly.JavaScript.valueToCode(a,"COLOUR2",Blockly.JavaScript.ORDER_COMMA)||"'#000000'";a=Blockly.JavaScript.valueToCode(a,"RATIO",Blockly.JavaScript.ORDER_COMMA)||0.5;return[Blockly.JavaScript.provideFunction_("colour_blend",["function "+Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(c1, c2, ratio) {"," ratio = Math.max(Math.min(Number(ratio), 1), 0);"," var r1 = parseInt(c1.substring(1, 3), 16);", +" var g1 = parseInt(c1.substring(3, 5), 16);"," var b1 = parseInt(c1.substring(5, 7), 16);"," var r2 = parseInt(c2.substring(1, 3), 16);"," var g2 = parseInt(c2.substring(3, 5), 16);"," var b2 = parseInt(c2.substring(5, 7), 16);"," var r = Math.round(r1 * (1 - ratio) + r2 * ratio);"," var g = Math.round(g1 * (1 - ratio) + g2 * ratio);"," var b = Math.round(b1 * (1 - ratio) + b2 * ratio);"," r = ('0' + (r || 0).toString(16)).slice(-2);"," g = ('0' + (g || 0).toString(16)).slice(-2);"," b = ('0' + (b || 0).toString(16)).slice(-2);", +" return '#' + r + g + b;","}"])+"("+b+", "+c+", "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]}; \ No newline at end of file diff --git a/msg/js/cs.js b/msg/js/cs.js index 50ece9b30..849718944 100644 --- a/msg/js/cs.js +++ b/msg/js/cs.js @@ -15,7 +15,7 @@ Blockly.Msg.COLOUR_BLEND_COLOUR2 = "barva 2"; Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; // untranslated Blockly.Msg.COLOUR_BLEND_RATIO = "poměr"; Blockly.Msg.COLOUR_BLEND_TITLE = "smíchat"; -Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Smíchá dvě barvy v daném poměru (0.0 - 1.0)."; +Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Smíchá dvě barvy v daném poměru (0.0–1.0)."; Blockly.Msg.COLOUR_PICKER_HELPURL = "https://cs.wikipedia.org/wiki/Barva"; Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Vyberte barvu z palety."; Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated @@ -35,7 +35,7 @@ Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Přeskoč zbytek této Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Upozornění: Tento blok může být použit pouze uvnitř smyčky."; Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#for_each for each block"; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST = "v seznamu"; -Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; +Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "pro každou položku"; Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Pro každou položku v seznamu nastavte do proměnné '%1' danou položku a proveďte nějaké operace."; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; // untranslated @@ -51,9 +51,9 @@ Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "nebo pokud"; Blockly.Msg.CONTROLS_IF_MSG_IF = "pokud"; Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "Je-li hodnota pravda, proveď určité příkazy."; Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "Je-li hodnota pravda, proveď první blok příkazů. V opačném případě proveď druhý blok příkazů."; -Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "Je-li první hodnota pravda, proveď první blok příkazů. V opačném případě je-li druhá hodnota pravda, proveď druhý blok příkazů."; +Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "Je-li první hodnota pravdivá, proveď první blok příkazů. V opačném případě, je-li pravdivá druhá hodnota, proveď druhý blok příkazů."; Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "Je-li první hodnota pravda, proveď první blok příkazů. Je-li druhá hodnota pravda, proveď druhý blok příkazů. Pokud žádná hodnota není pravda, proveď poslední blok příkazů."; -Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://cs.wikipedia.org/wiki/Cyklus_for"; Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "udělej"; Blockly.Msg.CONTROLS_REPEAT_TITLE = "opakovat %1 krát"; Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT = "opakovat"; @@ -62,8 +62,8 @@ Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Proveď určité příkazy několikrát." Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "http://code.google.com/p/blockly/wiki/Repeat"; Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "opakovat dokud"; Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "opakovat když"; -Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "Když je hodnota nepravda, proveď určité příkazy."; -Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "Když je hodnota pravda, proveď určité příkazy."; +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "Dokud je hodnota nepravdivá, prováděj určité příkazy."; +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "Dokud je hodnota pravdivá, prováděj určité příkazy."; Blockly.Msg.DELETE_BLOCK = "Odstranit blok"; Blockly.Msg.DELETE_X_BLOCKS = "Odstranit %1 bloky"; Blockly.Msg.DISABLE_BLOCK = "Zakázat blok"; @@ -90,7 +90,7 @@ Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "získat a odstranit"; Blockly.Msg.LISTS_GET_INDEX_LAST = "poslední"; Blockly.Msg.LISTS_GET_INDEX_RANDOM = "náhodné"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "odstranit"; -Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; +Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Vrátí první položku v seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Vrátí položku z určené pozice v seznamu. #1 je poslední položka."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Vrátí položku z určené pozice v seznamu. #1 je první položka."; @@ -113,7 +113,7 @@ Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://code.google.com/p/blockly/wiki/ Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "získat podseznam od první položky"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "získat podseznam od # od konce"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "získat podseznam od #"; -Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Vytvoří kopii určené části seznamu."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "najít první výskyt položky"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#Getting_Items_from_a_List"; // untranslated @@ -147,7 +147,7 @@ Blockly.Msg.LOGIC_BOOLEAN_FALSE = "nepravda"; Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://code.google.com/p/blockly/wiki/True_False"; // untranslated Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Vrací pravda nebo nepravda."; Blockly.Msg.LOGIC_BOOLEAN_TRUE = "pravda"; -Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://cs.wikipedia.org/wiki/Nerovnost_(matematika)"; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Vrátí hodnotu pravda, pokud se oba vstupy rovnají jeden druhému."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Navrátí hodnotu pravda, pokud první vstup je větší než druhý vstup."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Navrátí hodnotu pravda, pokud je první vstup větší a nebo rovný druhému vstupu."; @@ -167,8 +167,8 @@ Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "Vrátí hodnotu pravda, pokud oba dva Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "Vrátí hodnotu pravda, pokud alespoň jeden ze vstupů má hodnotu pravda."; Blockly.Msg.LOGIC_TERNARY_CONDITION = "test"; Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "pokud je nepravda"; -Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "pokud je pravda"; +Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "je-li nepravda"; +Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "je-li to pravda"; Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "Zkontroluje podmínku v \"testu\". Když je podmínka pravda, vrátí hodnotu \"pokud pravda\"; v opačném případě vrátí hodnotu \"pokud nepravda\"."; Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; // untranslated Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://cs.wikipedia.org/wiki/Aritmetika"; @@ -177,11 +177,11 @@ Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Vrátí podíl dvou čísel."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Vrátí rozdíl dvou čísel."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Vrátí součin dvou čísel."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Vrátí první číslo umocněné na druhé číslo."; -Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg.MATH_CHANGE_HELPURL = "https://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; Blockly.Msg.MATH_CHANGE_INPUT_BY = "od"; Blockly.Msg.MATH_CHANGE_TITLE_CHANGE = "změnit"; Blockly.Msg.MATH_CHANGE_TOOLTIP = "Přičti číslo k proměnné '%1'."; -Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Vraťte jednu z následujících konstant: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; Blockly.Msg.MATH_CONSTRAIN_HELPURL = "http://en.wikipedia.org/wiki/Clamping_%28graphics%29"; Blockly.Msg.MATH_CONSTRAIN_TITLE = "omez %1 na rozmezí od %2 do %3"; @@ -195,7 +195,7 @@ Blockly.Msg.MATH_IS_POSITIVE = "je kladné"; Blockly.Msg.MATH_IS_PRIME = "je prvočíslo"; Blockly.Msg.MATH_IS_TOOLTIP = "Kontrola, zda je číslo sudé, liché, prvočíslo, celé, kladné, záporné nebo zda je dělitelné daným číslem. Vrací pravdu nebo nepravdu."; Blockly.Msg.MATH_IS_WHOLE = "je celé"; -Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg.MATH_MODULO_HELPURL = "https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_aritmetika"; Blockly.Msg.MATH_MODULO_TITLE = "zbytek po dělení %1 ÷ %2"; Blockly.Msg.MATH_MODULO_TOOLTIP = "Vrátí zbytek po dělení dvou čísel."; Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; @@ -212,17 +212,17 @@ Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "směrodatná odchylka ze seznamu"; Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "suma seznamu"; Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Vrátí průměr (aritmetický průměr) číselných hodnot v seznamu."; Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Vrátí největší číslo v seznamu."; -Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Vrátí střední hodnotu (medián) seznamu."; +Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Vrátí medián seznamu."; Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Vrátí nejmenší číslo v seznamu."; Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Vrátí seznam nejčastějších položek seznamu."; Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Vrátí náhodnou položku ze seznamu."; Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Vrátí směrodatnou odchylku seznamu."; Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Vrátí součet všech čísel v seznamu."; Blockly.Msg.MATH_POWER_SYMBOL = "^"; -Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "náhodné číslo mezi 0 (včetně) do 1"; Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Vrátí náhodné číslo mezi 0,0 (včetně) až 1,0"; -Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; Blockly.Msg.MATH_RANDOM_INT_TITLE = "náhodné celé číslo od %1 do %2"; Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Vrací náhodné celé číslo mezi dvěma určenými mezemi, včetně mezních hodnot."; Blockly.Msg.MATH_ROUND_HELPURL = "https://cs.wikipedia.org/wiki/Zaokrouhlení"; @@ -242,8 +242,8 @@ Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "Vrátí mocninu čísla 10."; Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "Vrátí druhou odmocninu čísla."; Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-"; Blockly.Msg.MATH_TRIG_ACOS = "acos"; -Blockly.Msg.MATH_TRIG_ASIN = "asin"; -Blockly.Msg.MATH_TRIG_ATAN = "atan"; +Blockly.Msg.MATH_TRIG_ASIN = "arcsin"; +Blockly.Msg.MATH_TRIG_ATAN = "arctan"; Blockly.Msg.MATH_TRIG_COS = "cos"; Blockly.Msg.MATH_TRIG_HELPURL = "https://cs.wikipedia.org/wiki/Goniometrická_funkce"; Blockly.Msg.MATH_TRIG_SIN = "sin"; @@ -256,15 +256,15 @@ Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Vrátí sinus úhlu ve stupních."; Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Vrátí tangens úhlu ve stupních."; Blockly.Msg.NEW_VARIABLE = "Nová proměnná..."; Blockly.Msg.NEW_VARIABLE_TITLE = "Nový název proměnné:"; -Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "s:"; -Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; -Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://cs.wikipedia.org/wiki/Funkce_(programov%C3%A1n%C3%AD)"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Spustí uživatelem definovanou funkci '%1'."; -Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://cs.wikipedia.org/wiki/Funkce_(programov%C3%A1n%C3%AD)"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Spustí uživatelem definovanou funkci '%1' a použije její výstup."; Blockly.Msg.PROCEDURES_CREATE_DO = "Vytvořit '%1'"; -Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "proveď něco"; Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "k provedení"; @@ -283,7 +283,7 @@ Blockly.Msg.RENAME_VARIABLE = "Přejmenovat proměnné..."; Blockly.Msg.RENAME_VARIABLE_TITLE = "Přejmenujte všechny proměnné '%1':"; Blockly.Msg.TEXT_APPEND_APPENDTEXT = "přidat text"; Blockly.Msg.TEXT_APPEND_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; // untranslated -Blockly.Msg.TEXT_APPEND_TO = "k"; +Blockly.Msg.TEXT_APPEND_TO = "do"; Blockly.Msg.TEXT_APPEND_TOOLTIP = "Přidá určitý text k proměnné '%1'."; Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Adjusting_text_case"; Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "na malá písmena"; @@ -297,7 +297,7 @@ Blockly.Msg.TEXT_CHARAT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#E Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "v textu"; Blockly.Msg.TEXT_CHARAT_LAST = "získat poslední písmeno"; Blockly.Msg.TEXT_CHARAT_RANDOM = "získat náhodné písmeno"; -Blockly.Msg.TEXT_CHARAT_TAIL = ""; +Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Získat písmeno na konkrétní pozici."; Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Přidat položku do textu."; Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "spojit"; @@ -310,13 +310,13 @@ Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "v textu"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "získat podřetězec od prvního písmene"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "získat podřetězec od písmene # od konce"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "získat podřetězec od písmene #"; -Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Získat zadanou část textu."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; // untranslated Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "v textu"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "najít první výskyt textu"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "najít poslední výskyt textu"; -Blockly.Msg.TEXT_INDEXOF_TAIL = ""; +Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vrátí hodnotu 0."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 je prázdný"; @@ -329,24 +329,24 @@ Blockly.Msg.TEXT_LENGTH_TITLE = "délka %1"; Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Vrátí počet písmen (včetně mezer) v zadaném textu."; Blockly.Msg.TEXT_PRINT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Printing_text"; // untranslated Blockly.Msg.TEXT_PRINT_TITLE = "tisk %1"; -Blockly.Msg.TEXT_PRINT_TOOLTIP = "Vypíše zadaný text, číslo či jinou hodnotu."; +Blockly.Msg.TEXT_PRINT_TOOLTIP = "Tisk zadaného textu, čísla nebo jiné hodnoty."; Blockly.Msg.TEXT_PROMPT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Getting_input_from_the_user"; Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Výzva pro uživatele k zadání čísla."; Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Výzva pro uživatele k zadání nějakého textu."; Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "výzva k zadání čísla se zprávou"; Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "výzva k zadání textu se zprávou"; -Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg.TEXT_TEXT_HELPURL = "https://cs.wikipedia.org/wiki/Textov%C3%BD_%C5%99et%C4%9Bzec"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "Písmeno, slovo nebo řádek textu."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "ořezat mezery z obou stran"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "ořezat mezery z levé strany"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "ořezat mezery z pravé strany"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "odstranit mezery z obou stran"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "odstranit mezery z levé strany"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "odstranit mezery z pravé strany"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Vrátí kopii textu s odstraněnými mezerami z jednoho nebo obou konců."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "položka"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Vytvořit \"nastavit %1\""; Blockly.Msg.VARIABLES_GET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Get"; -Blockly.Msg.VARIABLES_GET_TAIL = ""; -Blockly.Msg.VARIABLES_GET_TITLE = ""; +Blockly.Msg.VARIABLES_GET_TAIL = ""; // untranslated +Blockly.Msg.VARIABLES_GET_TITLE = ""; // untranslated Blockly.Msg.VARIABLES_GET_TOOLTIP = "Vrátí hodnotu této proměnné."; Blockly.Msg.VARIABLES_SET_CREATE_GET = "Vytvořit \"získat %1\""; Blockly.Msg.VARIABLES_SET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Set"; diff --git a/msg/js/el.js b/msg/js/el.js index c3c6e8403..f2c4e2642 100644 --- a/msg/js/el.js +++ b/msg/js/el.js @@ -338,9 +338,9 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "πρότρεψε με μήνυμα για Blockly.Msg.TEXT_TEXT_HELPURL = "https://el.wikipedia.org/wiki/Συμβολοσειρά"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "περίκοψε τα κενά και από τις δυο πλευρές"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "περίκοψε τα κενά από την αριστερή πλευρά"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "περίκοψε τα κενά από την δεξιά πλευρά"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "περίκοψε τα κενά και από τις δυο πλευρές του"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "περίκοψε τα κενά από την αριστερή πλευρά του"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "περίκοψε τα κενά από την δεξιά πλευρά του"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "αντικείμενο"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Δημιούργησε «όρισε %1»"; diff --git a/msg/js/en.js b/msg/js/en.js index e6e516c48..74a49539e 100644 --- a/msg/js/en.js +++ b/msg/js/en.js @@ -374,4 +374,4 @@ Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF; Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF; Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; -Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE; +Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE; \ No newline at end of file diff --git a/msg/js/es.js b/msg/js/es.js index 5866fc381..394297363 100644 --- a/msg/js/es.js +++ b/msg/js/es.js @@ -338,9 +338,9 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "solicitar el texto con el mensaje"; Blockly.Msg.TEXT_TEXT_HELPURL = "https://es.wikipedia.org/wiki/Cadena_de_caracteres"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "Una letra, palabra o línea de texto."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "recortar espacios de ambos lados"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "recortar espacios del lado izquierdo"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "recortar espacios del lado derecho"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "quitar espacios de ambos lados de"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "quitar espacios al inicio de"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "quitar espacios al final de"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Devuelve una copia del texto con espacios retirados de uno o ambos extremos."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "elemento"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Crear 'set %1'"; diff --git a/msg/js/fa.js b/msg/js/fa.js index f574ef3ab..4121f7eca 100644 --- a/msg/js/fa.js +++ b/msg/js/fa.js @@ -275,7 +275,7 @@ Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "تابعی با یک خروجی می Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "اخطار: این تابعی پارامتر تکراری دارد."; Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "برجسته‌سازی تعریف تابع"; Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; -Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "اخطار: این بلوگ احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "نام ورودی:"; Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "ورودی‌ها"; Blockly.Msg.REMOVE_COMMENT = "حذف نظر"; @@ -338,9 +338,9 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "اعلان برای متن با پیام"; Blockly.Msg.TEXT_TEXT_HELPURL = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "یک حرف، کلمه یا خطی از متن."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "تراشیدن فاصله‌ها از هر دو طرف"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "تراشیدن فاصله‌ها از طرف چپ"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "مورد"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "درست‌کردن «تنظیم %1»"; diff --git a/msg/js/fi.js b/msg/js/fi.js index c3902afdc..483afca1c 100644 --- a/msg/js/fi.js +++ b/msg/js/fi.js @@ -16,7 +16,7 @@ Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/" Blockly.Msg.COLOUR_BLEND_RATIO = "suhde"; Blockly.Msg.COLOUR_BLEND_TITLE = "sekoitus"; Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Sekoittaa kaksi väriä keskenään annetussa suhteessa (0.0 - 1.0)."; -Blockly.Msg.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg.COLOUR_PICKER_HELPURL = "https://fi.wikipedia.org/wiki/V%C3%A4ri"; Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Valitse väri paletista."; Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated Blockly.Msg.COLOUR_RANDOM_TITLE = "satunnainen väri"; @@ -53,7 +53,7 @@ Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "Jos arvo on tosi, suorita lauseke."; Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "Jos arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten suorita toinen lohko lausekkeita."; Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita."; Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita. Jos mikään arvoista ei ole tosi, suorita viimeinen lohko lausekkeita."; -Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "tee"; Blockly.Msg.CONTROLS_REPEAT_TITLE = "toista %1 kertaa"; Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT = "toista"; @@ -147,7 +147,7 @@ Blockly.Msg.LOGIC_BOOLEAN_FALSE = "epätosi"; Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://code.google.com/p/blockly/wiki/True_False"; // untranslated Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Palauttaa joko tosi tai epätosi."; Blockly.Msg.LOGIC_BOOLEAN_TRUE = "tosi"; -Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://fi.wikipedia.org/wiki/Ep%C3%A4yht%C3%A4l%C3%B6"; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Palauta tosi, jos syötteet ovat keskenään samat."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Palauttaa tosi, jos ensimmäinen syöte on suurempi, kuin toinen."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Palauttaa tosi, jos ensimmäinen syöte on suurempi tai yhtä suuri, kuin toinen."; @@ -177,11 +177,11 @@ Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Palauttaa jakolaskun osamäärän. Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Palauttaa kahden luvun erotuksen."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Palauttaa kertolaskun tulon."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Palauttaa ensimmäisen luvun korotettuna toisen luvun potenssiin."; -Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg.MATH_CHANGE_HELPURL = "https://fi.wikipedia.org/wiki/Yhteenlasku"; Blockly.Msg.MATH_CHANGE_INPUT_BY = "arvolla"; Blockly.Msg.MATH_CHANGE_TITLE_CHANGE = "muuta"; Blockly.Msg.MATH_CHANGE_TOOLTIP = "Lisää arvo muuttujaan '%1'."; -Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Palauttaa jonkin seuraavista vakioista: π (3.141…), e (2.718…), φ (1.618…), neliöjuuri(2) (1.414…), neliöjuuri(½) (0.707…), or ∞ (ääretön)."; Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated Blockly.Msg.MATH_CONSTRAIN_TITLE = "rajoita %1 vähintään %2 enintään %3"; @@ -195,11 +195,11 @@ Blockly.Msg.MATH_IS_POSITIVE = "on positiivinen"; Blockly.Msg.MATH_IS_PRIME = "on alkuluku"; Blockly.Msg.MATH_IS_TOOLTIP = "Tarkistaa onko numero parillinen, pariton, alkuluku, kokonaisluku, positiivinen, negatiivinen, tai jos se on jaollinen toisella luvulla. Palauttaa tosi tai epätosi."; Blockly.Msg.MATH_IS_WHOLE = "on kokonaisluku"; -Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; Blockly.Msg.MATH_MODULO_TITLE = "%1 ÷ %2 jakojäännös"; Blockly.Msg.MATH_MODULO_TOOLTIP = "Palauttaa jakolaskun jakojäännöksen."; Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "⋅"; -Blockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg.MATH_NUMBER_HELPURL = "https://fi.wikipedia.org/wiki/Luku"; Blockly.Msg.MATH_NUMBER_TOOLTIP = "Luku."; Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "keskiarvo luvuista"; @@ -219,13 +219,13 @@ Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Palauttaa satunnaisesti valitun luvun Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Palauttaa annettujen lukujen keskihajonnan."; Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Palauttaa kaikkien annettujen lukujen summan."; Blockly.Msg.MATH_POWER_SYMBOL = "^"; -Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://fi.wikipedia.org/wiki/Satunnaisluku"; Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "satunnainen murtoluku"; Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Palauttaa satunnaisen luvun oikealta puoliavoimesta välistä [0.0, 1.0)."; -Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://fi.wikipedia.org/wiki/Satunnaisluku"; Blockly.Msg.MATH_RANDOM_INT_TITLE = "Palauttaa satunnaisen kokonaisluvun väliltä %1-%2"; Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Palauttaa satunnaisen kokonaisluvun kahden annetun arvon suljetulta väliltä."; -Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg.MATH_ROUND_HELPURL = "https://fi.wikipedia.org/wiki/Py%C3%B6rist%C3%A4minen"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "pyöristä"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "pyöristä alaspäin"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "pyöristä ylöspäin"; @@ -245,7 +245,7 @@ Blockly.Msg.MATH_TRIG_ACOS = "acos"; Blockly.Msg.MATH_TRIG_ASIN = "asin"; Blockly.Msg.MATH_TRIG_ATAN = "atan"; Blockly.Msg.MATH_TRIG_COS = "cos"; -Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg.MATH_TRIG_HELPURL = "https://fi.wikipedia.org/wiki/Trigonometrinen_funktio"; Blockly.Msg.MATH_TRIG_SIN = "sin"; Blockly.Msg.MATH_TRIG_TAN = "tan"; Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Palauttaa luvun arkuskosinin."; @@ -259,9 +259,9 @@ Blockly.Msg.NEW_VARIABLE_TITLE = "Uuden muuttujan nimi:"; Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "parametrit:"; Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated -Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://fi.wikipedia.org/wiki/Aliohjelma"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Suorittaa käyttäjän määrittelemä funktio '%1'."; -Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://fi.wikipedia.org/wiki/Aliohjelma"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Suorittaa käyttäjän määrittelemän funktion '%1' ja käyttää sen tuotosta."; Blockly.Msg.PROCEDURES_CREATE_DO = "Luo '%1'"; Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated diff --git a/msg/js/he.js b/msg/js/he.js index 4dd5810f7..720137005 100644 --- a/msg/js/he.js +++ b/msg/js/he.js @@ -9,7 +9,7 @@ goog.require('Blockly.Msg'); Blockly.Msg.ADD_COMMENT = "הוסף תגובה"; Blockly.Msg.CHANGE_VALUE_TITLE = "שנה ערך:"; Blockly.Msg.COLLAPSE_ALL = "צמצם קטעי קוד"; -Blockly.Msg.COLLAPSE_BLOCK = "צמצום קטע קוד"; +Blockly.Msg.COLLAPSE_BLOCK = "צמצם קטע קוד"; Blockly.Msg.COLOUR_BLEND_COLOUR1 = "צבע 1"; Blockly.Msg.COLOUR_BLEND_COLOUR2 = "צבע 2"; Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; @@ -66,7 +66,7 @@ Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "בזמן שהערך שווה ל Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "בזמן שהערך שווה לשגוי, תעשה מספר חישובים."; Blockly.Msg.DELETE_BLOCK = "מחק קטע קוד"; Blockly.Msg.DELETE_X_BLOCKS = "מחק %1 קטעי קוד"; -Blockly.Msg.DISABLE_BLOCK = "נטרול קטע קוד"; +Blockly.Msg.DISABLE_BLOCK = "נטרל קטע קוד"; Blockly.Msg.DUPLICATE_BLOCK = "שכפל"; Blockly.Msg.ENABLE_BLOCK = "הפעל קטע קוד"; Blockly.Msg.EXPAND_ALL = "הרחב קטעי קוד"; @@ -279,7 +279,7 @@ Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "שם הקלט:"; Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "מקורות קלט"; Blockly.Msg.REMOVE_COMMENT = "הסר הערה"; -Blockly.Msg.RENAME_VARIABLE = "שנה את שם המשתנה:"; +Blockly.Msg.RENAME_VARIABLE = "שנה את שם המשתנה..."; Blockly.Msg.RENAME_VARIABLE_TITLE = "שנה את שם כל '%1' המשתנים ל:"; Blockly.Msg.TEXT_APPEND_APPENDTEXT = "append text"; Blockly.Msg.TEXT_APPEND_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; @@ -338,9 +338,9 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message"; Blockly.Msg.TEXT_TEXT_HELPURL = "http://en.wikipedia.org/wiki/String_(computer_science)"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "trim spaces from both sides"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "trim spaces from left side"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "trim spaces from right side"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "למחוק רווחים משני הקצוות"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "למחוק רווחים מימין"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "למחוק רווחים משמאל"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "פריט"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'"; diff --git a/msg/js/ja.js b/msg/js/ja.js index a8c9b9bad..fef470193 100644 --- a/msg/js/ja.js +++ b/msg/js/ja.js @@ -161,7 +161,7 @@ Blockly.Msg.LOGIC_NULL = "null"; Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; Blockly.Msg.LOGIC_NULL_TOOLTIP = "Null を返します。"; Blockly.Msg.LOGIC_OPERATION_AND = "そして"; -Blockly.Msg.LOGIC_OPERATION_HELPURL = "http://code.google.com/p/blockly/wiki/And_Or"; +Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://code.google.com/p/blockly/wiki/And_Or"; Blockly.Msg.LOGIC_OPERATION_OR = "または"; Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "両方の入力がおんなじ場わいわtrue を返します。"; Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "最低少なくとも 1 つの入力が true の場合は true を返します。"; @@ -338,13 +338,13 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "メッセージをプロンプトしてに Blockly.Msg.TEXT_TEXT_HELPURL = "https://ja.wikipedia.org/wiki/文字列"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "文字、単語、または行のテキスト。"; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "両側からのスペースをトリミングします。"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "左側からスペースをトリミングします。"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "右側からスペースをトリミングします。"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "両端のスペースを取り除く"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "左端のスペースを取り除く"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "右端のスペースを取り除く"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "スペースを 1 つまたは両方の端から削除したのち、テキストのコピーを返します。"; Blockly.Msg.VARIABLES_DEFAULT_NAME = "項目"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "'セット%1を作成します。"; -Blockly.Msg.VARIABLES_GET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Get"; +Blockly.Msg.VARIABLES_GET_HELPURL = "https://code.google.com/p/blockly/wiki/Variables#Get"; Blockly.Msg.VARIABLES_GET_TAIL = ""; Blockly.Msg.VARIABLES_GET_TITLE = ""; Blockly.Msg.VARIABLES_GET_TOOLTIP = "この変数の値を返します。"; diff --git a/msg/js/ms.js b/msg/js/ms.js index dfa3679fd..fde6b15a6 100644 --- a/msg/js/ms.js +++ b/msg/js/ms.js @@ -6,27 +6,27 @@ goog.provide('Blockly.Msg.ms'); goog.require('Blockly.Msg'); -Blockly.Msg.ADD_COMMENT = "Tambah Komen"; -Blockly.Msg.CHANGE_VALUE_TITLE = "Tukar nilai:"; -Blockly.Msg.COLLAPSE_ALL = "Robohkan Blok"; -Blockly.Msg.COLLAPSE_BLOCK = "Robohkan Blok"; +Blockly.Msg.ADD_COMMENT = "Berikan Komen"; +Blockly.Msg.CHANGE_VALUE_TITLE = "Ubah nilai:"; +Blockly.Msg.COLLAPSE_ALL = "Lipat Blok²"; +Blockly.Msg.COLLAPSE_BLOCK = "Lipat Blok"; Blockly.Msg.COLOUR_BLEND_COLOUR1 = "warna 1"; Blockly.Msg.COLOUR_BLEND_COLOUR2 = "warna 2"; Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; // untranslated Blockly.Msg.COLOUR_BLEND_RATIO = "nisbah"; -Blockly.Msg.COLOUR_BLEND_TITLE = "campuran"; -Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Mencampuradukkan dua warna bersama-sama dengan nisbah yang tertentu (0.0 - 1.0)."; -Blockly.Msg.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Memilih satu warna dari palet."; +Blockly.Msg.COLOUR_BLEND_TITLE = "adun"; +Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Campurkan dua warna sekali pada nisbah yang ditentukan (0.0 - 1.0)."; +Blockly.Msg.COLOUR_PICKER_HELPURL = "https://ms.wikipedia.org/wiki/Warna"; +Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Pilih satu warna daripada palet."; Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated -Blockly.Msg.COLOUR_RANDOM_TITLE = "Warna rawak"; +Blockly.Msg.COLOUR_RANDOM_TITLE = "warna rawak"; Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Pilih satu warna secara rawak."; Blockly.Msg.COLOUR_RGB_BLUE = "biru"; Blockly.Msg.COLOUR_RGB_GREEN = "hijau"; Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html"; // untranslated Blockly.Msg.COLOUR_RGB_RED = "merah"; -Blockly.Msg.COLOUR_RGB_TITLE = "warna dengan"; -Blockly.Msg.COLOUR_RGB_TOOLTIP = "Mencipta satu warna dengan jumlah yang ditetapkan merah, hijau dan biru. Semua nilai mestilah antara 0 dan 100."; +Blockly.Msg.COLOUR_RGB_TITLE = "warnakan"; +Blockly.Msg.COLOUR_RGB_TOOLTIP = "Peroleh satu warna dengan menentukan amaun campuran merah, hijau dan biru. Kesemua nilai haruslah antara 0 hingga 100."; Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#Loop_Termination_Blocks"; // untranslated Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "Keluar daripada gelung lingkaran"; Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "Teruskan dengan pengulangan seterusnya gelung"; @@ -35,13 +35,13 @@ Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Langkau seluruh gelung Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Amaran: Blok ini hanya boleh digunakan dalam satu lingkaran."; Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#for_each for each block"; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST = "dalam senarai"; -Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; -Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "bagi setiap item"; -Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Bagi setiap item dalam senarai, tetapkan pembolehubah '%1' ke item, dan kemudian lakukan beberapa penyata."; +Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; // untranslated +Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "untuk setiap perkara"; +Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Untuk setiap perkara dalam senarai, tetapkan pembolehubah '%1' pada perkara, kemudian lakukan beberapa perintah."; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; // untranslated -Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY = "dari %1 ke %2 dengan %3"; -Blockly.Msg.CONTROLS_FOR_INPUT_WITH = "mengira dengan"; -Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Jadikan %1 pembolehubah sebagai nilai daripada nombor permulaan hingga nombor terakhir, kiraan melalui interval yang telah ditentukan, dan bina blok-blok tertentu."; +Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY = "dari %1 hingga %2 selang %3"; +Blockly.Msg.CONTROLS_FOR_INPUT_WITH = "kira dengan"; +Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Gunakan pembolehubah %1 pada nilai-nilai dari nombor pangkal hingga nombor hujung, mengira mengikut selang yang ditentukan, dan lakukan blok-blok yang tertentu."; Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Tambah satu syarat kepada blok jika."; Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Tambah yang terakhir, alihkan semua keadaan ke blok jika."; Blockly.Msg.CONTROLS_IF_HELPURL = "https://code.google.com/p/blockly/wiki/If_Then"; // untranslated @@ -53,26 +53,26 @@ Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "Jika nilai yang benar, lakukan beberapa pen Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "Jika suatu nilai benar, lakukan penyata blok pertama. Jika tidak, bina penyata blok kedua."; Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "Jika nilai yang pertama adalah benar, lakukan penyata pertama blok. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua."; Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "Jika nilai yang pertama adalah benar, lakukan penyata blok pertama. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua. Jika tiada nilai adalah benar, lakukan penyata blok terakhir."; -Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "Hasilkan"; -Blockly.Msg.CONTROLS_REPEAT_TITLE = "Ulangi %1 kali"; -Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT = "Ulang"; +Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "lakukan"; +Blockly.Msg.CONTROLS_REPEAT_TITLE = "ulang %1 kali"; +Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT = "ulang"; Blockly.Msg.CONTROLS_REPEAT_TITLE_TIMES = "kali"; -Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Hasilkan penyata beberapa kali."; +Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Lakukan perintah berulang kali."; Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://code.google.com/p/blockly/wiki/Repeat"; // untranslated -Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "ulang sehingga"; -Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "ulang semasa"; -Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "Apabila nilai adalah palsu, lakukan beberapa penyata."; -Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "Apabila nilai adalah palsu, lakukan beberapa penyata."; -Blockly.Msg.DELETE_BLOCK = "Hapuskan blok"; -Blockly.Msg.DELETE_X_BLOCKS = "Hapus %1 Blok"; -Blockly.Msg.DISABLE_BLOCK = "Nyahaktif blok"; -Blockly.Msg.DUPLICATE_BLOCK = "Duplikat"; -Blockly.Msg.ENABLE_BLOCK = "Membolehkan Blok"; -Blockly.Msg.EXPAND_ALL = "Meluaskan Blok"; -Blockly.Msg.EXPAND_BLOCK = "Meluaskan Blok"; -Blockly.Msg.EXTERNAL_INPUTS = "Input Ekstern"; -Blockly.Msg.HELP = "Bantu"; +Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "ulangi sehingga"; +Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "ulangi apabila"; +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "Lakukan beberapa perintah apabila nilainya palsu (false)."; +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "Lakukan beberapa perintah apabila nilainya benar (true)."; +Blockly.Msg.DELETE_BLOCK = "Hapuskan Blok"; +Blockly.Msg.DELETE_X_BLOCKS = "Hapuskan %1 Blok"; +Blockly.Msg.DISABLE_BLOCK = "Matikan Blok"; +Blockly.Msg.DUPLICATE_BLOCK = "Pendua"; +Blockly.Msg.ENABLE_BLOCK = "Hidupkan Blok"; +Blockly.Msg.EXPAND_ALL = "Buka Blok²"; +Blockly.Msg.EXPAND_BLOCK = "Buka Blok"; +Blockly.Msg.EXTERNAL_INPUTS = "Input Luaran"; +Blockly.Msg.HELP = "Bantuan"; Blockly.Msg.INLINE_INPUTS = "Input Sebaris"; Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://en.wikipedia.org/wiki/Linked_list#Empty_lists"; // untranslated Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "Wujudkan senarai kosong"; @@ -81,7 +81,7 @@ Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "senarai"; Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula senarai blok."; Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "wujudkan senarai dengan"; Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Tambah item ke dalam senarai."; -Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Wujudkan senarai dengan apa jua nombor item. "; +Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Wujudkan senarai dengan apa jua nombor item."; Blockly.Msg.LISTS_GET_INDEX_FIRST = "pertama"; Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# dari akhir"; Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#"; @@ -90,7 +90,7 @@ Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "dapat dan alihkan"; Blockly.Msg.LISTS_GET_INDEX_LAST = "terakhir"; Blockly.Msg.LISTS_GET_INDEX_RANDOM = "rawak"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "alihkan"; -Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; +Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Kembalikan item pertama dalam senarai."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai. #1 ialah item terakhir."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai. #1 ialah item terakhir."; @@ -113,7 +113,7 @@ Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://code.google.com/p/blockly/wiki/ Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "dapatkan sub-senarai daripada pertama"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "dapatkan sub-senarai daripada # daripada terakhir"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "dapatkan sub-senarai daripada #"; -Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Wujudkan salinan bahagian yang ditentukan dari senarai."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "cari pertama item kejadian"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#Getting_Items_from_a_List"; // untranslated @@ -147,7 +147,7 @@ Blockly.Msg.LOGIC_BOOLEAN_FALSE = "palsu"; Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://code.google.com/p/blockly/wiki/True_False"; // untranslated Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Kembalikan samada benar atau palsu."; Blockly.Msg.LOGIC_BOOLEAN_TRUE = "benar"; -Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://id.wikipedia.org/wiki/Pertidaksamaan"; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Kembali benar jika kedua-dua input benar antara satu sama lain."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Kembali benar jika input pertama adalah lebih besar daripada input kedua."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Kembali benar jika input pertama adalah lebih besar daripada atau sama dengan input kedua."; @@ -171,17 +171,17 @@ Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "Jika palsu"; Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "Jika benar"; Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; -Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://ms.wikipedia.org/wiki/Aritmetik"; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Taip balik hasil bahagi dua nombor tersebut."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Taip balik hasil tolak dua nombor tersebut."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Taip balik hasil darab dua nombor tersebut."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number."; -Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg.MATH_CHANGE_HELPURL = "https://id.wikipedia.org/wiki/Perjumlahan"; Blockly.Msg.MATH_CHANGE_INPUT_BY = "oleh"; Blockly.Msg.MATH_CHANGE_TITLE_CHANGE = "perubahan"; Blockly.Msg.MATH_CHANGE_TOOLTIP = "Tambah nombor kepada pembolehubah '%1'."; -Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg.MATH_CONSTANT_HELPURL = "https://ms.wikipedia.org/wiki/Pemalar_matematik"; Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated Blockly.Msg.MATH_CONSTRAIN_TITLE = "constrain %1 low %2 high %3"; @@ -195,13 +195,13 @@ Blockly.Msg.MATH_IS_POSITIVE = "adalah positif"; Blockly.Msg.MATH_IS_PRIME = "is prime"; Blockly.Msg.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; Blockly.Msg.MATH_IS_WHOLE = "is whole"; -Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg.MATH_MODULO_HELPURL = "https://id.wikipedia.org/wiki/Operasi_modulus"; Blockly.Msg.MATH_MODULO_TITLE = "remainder of %1 ÷ %2"; Blockly.Msg.MATH_MODULO_TOOLTIP = "Taip balik baki yang didapat daripada pembahagian dua nombor tersebut."; Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; -Blockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg.MATH_NUMBER_HELPURL = "https://ms.wikipedia.org/wiki/Nombor"; Blockly.Msg.MATH_NUMBER_TOOLTIP = "Suatu nombor."; -Blockly.Msg.MATH_ONLIST_HELPURL = ""; +Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "purata daripada senarai"; Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "Max senarai"; Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "Median senarai"; @@ -219,18 +219,18 @@ Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Kembalikan elemen rawak daripada senar Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Kembali dengan sisihan piawai daripada senarai."; Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Kembalikan jumlah semua nombor dalam senarai."; Blockly.Msg.MATH_POWER_SYMBOL = "^"; -Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "pecahan rawak"; Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Kembali sebahagian kecil rawak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; -Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; Blockly.Msg.MATH_RANDOM_INT_TITLE = "integer rawak dari %1ke %2"; Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Kembalikan integer rawak diantara dua had yang ditentukan, inklusif."; -Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "pusingan"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "Pusingan ke bawah"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "pusingan ke atas"; Blockly.Msg.MATH_ROUND_TOOLTIP = "Bulat nombor yang naik atau turun."; -Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg.MATH_SINGLE_HELPURL = "https://ms.wikipedia.org/wiki/Punca_kuasa_dua"; Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "mutlak"; Blockly.Msg.MATH_SINGLE_OP_ROOT = "Punca kuasa dua"; Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Kembalikan nilai mutlak suatu nombor."; @@ -245,7 +245,7 @@ Blockly.Msg.MATH_TRIG_ACOS = "acos"; Blockly.Msg.MATH_TRIG_ASIN = "asin"; Blockly.Msg.MATH_TRIG_ATAN = "atan"; Blockly.Msg.MATH_TRIG_COS = "cos"; -Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg.MATH_TRIG_HELPURL = "https://ms.wikipedia.org/wiki/Fungsi_trigonometri"; Blockly.Msg.MATH_TRIG_SIN = "sin"; Blockly.Msg.MATH_TRIG_TAN = "tan"; Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Kembali arccosine beberapa nombor."; @@ -254,17 +254,17 @@ Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Kembalikan beberapa nombor arctangent."; Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "Kembalikan darjah kosinus (bukan radian)."; Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Kembalikan darjah sine (bukan radian)."; Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Kembalikan darjah tangen (bukan radian)."; -Blockly.Msg.NEW_VARIABLE = "Pembolehubah baharu..."; -Blockly.Msg.NEW_VARIABLE_TITLE = "Nama pemboleh ubah baru:"; -Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; +Blockly.Msg.NEW_VARIABLE = "Pembolehubah baru..."; +Blockly.Msg.NEW_VARIABLE_TITLE = "Nama pembolehubah baru:"; +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "dengan:"; -Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; -Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://ms.wikipedia.org/wiki/Fungsi"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'."; -Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://ms.wikipedia.org/wiki/Fungsi"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function '%1' and use its output."; Blockly.Msg.PROCEDURES_CREATE_DO = "Hasilkan '%1'"; -Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "Buat sesuatu"; Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "Untuk"; @@ -278,9 +278,9 @@ Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a sec Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "Amaran: Blok ini hanya boleh digunakan dalam fungsi definisi."; Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "Nama input:"; Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "Input-input"; -Blockly.Msg.REMOVE_COMMENT = "Batalkan komen"; -Blockly.Msg.RENAME_VARIABLE = "Rename variable..."; -Blockly.Msg.RENAME_VARIABLE_TITLE = "Rename all '%1' variables to:"; +Blockly.Msg.REMOVE_COMMENT = "Padamkan Komen"; +Blockly.Msg.RENAME_VARIABLE = "Tukar nama pembolehubah..."; +Blockly.Msg.RENAME_VARIABLE_TITLE = "Tukar nama semua pembolehubah '%1' kepada:"; Blockly.Msg.TEXT_APPEND_APPENDTEXT = "append text"; Blockly.Msg.TEXT_APPEND_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; // untranslated Blockly.Msg.TEXT_APPEND_TO = "Untuk"; @@ -297,7 +297,7 @@ Blockly.Msg.TEXT_CHARAT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#E Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "Dalam teks"; Blockly.Msg.TEXT_CHARAT_LAST = "Dapatkan abjad terakhir"; Blockly.Msg.TEXT_CHARAT_RANDOM = "Dapatkan abjad rawak"; -Blockly.Msg.TEXT_CHARAT_TAIL = ""; +Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position."; Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text."; Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "Sertai"; @@ -310,13 +310,13 @@ Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "dalam teks"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "get substring from first letter"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "get substring from letter # from end"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "get substring from letter #"; -Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; // untranslated Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "dalam teks"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "mencari kejadian pertama teks"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "mencari kejadian terakhir teks"; -Blockly.Msg.TEXT_INDEXOF_TAIL = ""; +Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Kembalikan Indeks kejadian pertama/terakhir dari teks pertama ke dalam teks kedua. Kembalikan 0 Jika teks tidak ditemui."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 adalah kosong"; @@ -335,18 +335,18 @@ Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Peringatan kepada pengguna untuk nombo Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Peringatkan pengguna untuk sebahagian teks."; Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "Prom untuk nombor dengan mesej"; Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "Prom untuk teks dengan mesej"; -Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg.TEXT_TEXT_HELPURL = "https://ms.wikipedia.org/wiki/Rentetan"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "Huruf, perkataan, atau baris teks."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "mengurangkan kawasan dari kedua-dua belah"; Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "mengurangkan kawasan dari sebelah kiri"; Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "mengurangkan kawasan dari sisi kanan"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Kembali salinan teks dengan ruang yang dikeluarkan daripada satu atau hujung kedua belah."; -Blockly.Msg.VARIABLES_DEFAULT_NAME = "item"; +Blockly.Msg.VARIABLES_DEFAULT_NAME = "Perkara"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Hasilkan 'set %1'"; Blockly.Msg.VARIABLES_GET_HELPURL = "https://code.google.com/p/blockly/wiki/Variables#Get"; // untranslated -Blockly.Msg.VARIABLES_GET_TAIL = ""; -Blockly.Msg.VARIABLES_GET_TITLE = ""; +Blockly.Msg.VARIABLES_GET_TAIL = ""; // untranslated +Blockly.Msg.VARIABLES_GET_TITLE = ""; // untranslated Blockly.Msg.VARIABLES_GET_TOOLTIP = "Kembalikan nilai pemboleh ubah ini."; Blockly.Msg.VARIABLES_SET_CREATE_GET = "Hasilkan 'set %1'"; Blockly.Msg.VARIABLES_SET_HELPURL = "https://code.google.com/p/blockly/wiki/Variables#Set"; // untranslated diff --git a/msg/js/pms.js b/msg/js/pms.js index 0be1f5351..147b77598 100644 --- a/msg/js/pms.js +++ b/msg/js/pms.js @@ -75,13 +75,13 @@ Blockly.Msg.EXTERNAL_INPUTS = "Imission esterne"; Blockly.Msg.HELP = "Agiut"; Blockly.Msg.INLINE_INPUTS = "Imission an linia"; Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://en.wikipedia.org/wiki/Linked_list#Empty_lists"; // untranslated -Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "create empty list"; // untranslated -Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "list"; // untranslated -Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "create list with"; // untranslated +Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "creé na lista veuida"; +Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Smon-e na lista, ëd longheur 0, ch'a conten gnun-a argistrassion"; +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "lista"; +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Gionté, gavé o riordiné le session për configuré torna cost blòch ëd lista."; +Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "creé na lista con"; Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list."; // untranslated -Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items."; // untranslated +Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Creé na lista con un nùmer qualsëssìa d'element."; Blockly.Msg.LISTS_GET_INDEX_FIRST = "first"; // untranslated Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# from end"; // untranslated Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#"; // untranslated @@ -219,12 +219,12 @@ Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "A smon n'element a l'ancàpit da la li Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "A smon la deviassion ëstàndard ëd la lista."; Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "A smon la soma ëd tuti ij nùmer ant la lista."; Blockly.Msg.MATH_POWER_SYMBOL = "^"; // untranslated -Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "random fraction"; // untranslated -Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg.MATH_RANDOM_INT_TITLE = "random integer from %1 to %2"; // untranslated -Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "frassion aleatòria"; +Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "A smon na frassion aleatòria antra 0,0 (comprèis) e 1,0 (esclus)."; +Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg.MATH_RANDOM_INT_TITLE = "antregh aleatòri antra %1 e %2"; +Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "A smon n'antregh aleatòri antra ij doi lìmit ëspessificà, comprèis."; Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "ariondé"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "ariondé për difet"; @@ -281,67 +281,67 @@ Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "inputs"; // untranslated Blockly.Msg.REMOVE_COMMENT = "Scancelé un coment"; Blockly.Msg.RENAME_VARIABLE = "Arnomé la variàbil..."; Blockly.Msg.RENAME_VARIABLE_TITLE = "Arnomé tute le variàbij '%1' 'me:"; -Blockly.Msg.TEXT_APPEND_APPENDTEXT = "append text"; // untranslated +Blockly.Msg.TEXT_APPEND_APPENDTEXT = "taché ël test"; Blockly.Msg.TEXT_APPEND_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; // untranslated -Blockly.Msg.TEXT_APPEND_TO = "to"; // untranslated -Blockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable '%1'."; // untranslated +Blockly.Msg.TEXT_APPEND_TO = "a"; +Blockly.Msg.TEXT_APPEND_TOOLTIP = "Taché dël test a la variàbil '%1'."; Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Adjusting_text_case"; // untranslated -Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "to lower case"; // untranslated -Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "to Title Case"; // untranslated -Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "to UPPER CASE"; // untranslated -Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg.TEXT_CHARAT_FIRST = "get first letter"; // untranslated -Blockly.Msg.TEXT_CHARAT_FROM_END = "get letter # from end"; // untranslated -Blockly.Msg.TEXT_CHARAT_FROM_START = "get letter #"; // untranslated +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "an minùscul"; +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "an Majùscol A L'Ancamin Ëd Minca Paròla"; +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "an MAJÙSCOL"; +Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "A smon na còpia dël test ant un caràter diferent."; +Blockly.Msg.TEXT_CHARAT_FIRST = "oten-e la prima litra"; +Blockly.Msg.TEXT_CHARAT_FROM_END = "oten-e la litra # da la fin"; +Blockly.Msg.TEXT_CHARAT_FROM_START = "oten-e la litra #"; Blockly.Msg.TEXT_CHARAT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Extracting_text"; // untranslated -Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "in text"; // untranslated -Blockly.Msg.TEXT_CHARAT_LAST = "get last letter"; // untranslated -Blockly.Msg.TEXT_CHARAT_RANDOM = "get random letter"; // untranslated +Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "ant ël test"; +Blockly.Msg.TEXT_CHARAT_LAST = "oten-e l'ùltima litra"; +Blockly.Msg.TEXT_CHARAT_RANDOM = "oten-e na litra a l'ancàpit"; Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated -Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position."; // untranslated -Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text."; // untranslated -Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "join"; // untranslated -Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "to letter # from end"; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "to letter #"; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "to last letter"; // untranslated +Blockly.Msg.TEXT_CHARAT_TOOLTIP = "A smon la litra ant la posission ëspessificà."; +Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Gionté n'element al test."; +Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "gionze"; +Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Gionté, gavé o riordiné le session për configuré torna ës blòch ëd test."; +Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "fin-a a la litra # da la fin"; +Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "fin-a a la litra #"; +Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "fin-a a l'ùltima litra"; Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Extracting_a_region_of_text"; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "in text"; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "get substring from first letter"; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "get substring from letter # from end"; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "get substring from letter #"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "ant ël test"; +Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "oten-e la sota-stringa da la prima litra"; +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "oten-e la sota-stringa da la litra # da la fin"; +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "oten-e la sota-stringa da la litra #"; Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated -Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text."; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "A smon un tòch ëspessificà dël test."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; // untranslated -Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "in text"; // untranslated -Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "find first occurrence of text"; // untranslated -Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "find last occurrence of text"; // untranslated +Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "ant ël test"; +Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "trové la prima ocorensa dël test"; +Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "trové l'ùltima ocorensa dël test"; Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of first text in the second text. Returns 0 if text is not found."; // untranslated +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "A smon l'ìndes dla prima/ùltima ocorensa dël prim test ant ël second test. A smon 0 se ël test a l'é nen trovà."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; // untranslated -Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty"; // untranslated -Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 a l'é veuid"; +Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "A smon ver se ël test fornì a l'é veuid."; Blockly.Msg.TEXT_JOIN_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_creation"; // untranslated -Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "create text with"; // untranslated -Blockly.Msg.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "creé ël test con"; +Blockly.Msg.TEXT_JOIN_TOOLTIP = "Creé un tòch ëd test an gionzend un nùmer qualsëssìa d'element."; Blockly.Msg.TEXT_LENGTH_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; // untranslated -Blockly.Msg.TEXT_LENGTH_TITLE = "length of %1"; // untranslated -Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg.TEXT_LENGTH_TITLE = "longheur ëd %1"; +Blockly.Msg.TEXT_LENGTH_TOOLTIP = "A smon ël nùmer ëd litre (spassi comprèis) ant ël test fornì."; Blockly.Msg.TEXT_PRINT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Printing_text"; // untranslated -Blockly.Msg.TEXT_PRINT_TITLE = "print %1"; // untranslated -Blockly.Msg.TEXT_PRINT_TOOLTIP = "Print the specified text, number or other value."; // untranslated +Blockly.Msg.TEXT_PRINT_TITLE = "smon-e %1"; +Blockly.Msg.TEXT_PRINT_TOOLTIP = "Smon-e ël test, ël nùmer o n'àutr valor ëspessificà."; Blockly.Msg.TEXT_PROMPT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Getting_input_from_the_user"; // untranslated -Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number."; // untranslated -Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text."; // untranslated -Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "prompt for number with message"; // untranslated -Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message"; // untranslated -Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text."; // untranslated +Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Ciamé un nùmer a l'utent."; +Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Ciamé un test a l'utent."; +Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "anvit për un nùmer con un mëssagi"; +Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "anvit për un test con un mëssagi"; +Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg.TEXT_TEXT_TOOLTIP = "Na litra, na paròla o na linia ëd test."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "trim spaces from both sides of"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "trim spaces from left side of"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "trim spaces from right side of"; // untranslated -Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "gavé jë spassi da le doe bande ëd"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "gavé jë spassi da la banda snistra ëd"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "gavé jë spassi da la banda drita ëd"; +Blockly.Msg.TEXT_TRIM_TOOLTIP = "A smon na còpia dël test con jë spassi gavà da n'estremità o da tute doe."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "element"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'"; // untranslated Blockly.Msg.VARIABLES_GET_HELPURL = "https://code.google.com/p/blockly/wiki/Variables#Get"; // untranslated diff --git a/msg/js/pt.js b/msg/js/pt.js index 10d5bdb22..f0e78e3a4 100644 --- a/msg/js/pt.js +++ b/msg/js/pt.js @@ -18,7 +18,7 @@ Blockly.Msg.COLOUR_BLEND_TITLE = "misturar"; Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Mistura duas cores dada uma proporção (0.0 - 1.0)."; Blockly.Msg.COLOUR_PICKER_HELPURL = "http://pt.wikipedia.org/wiki/Cor"; Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Escolhe uma cor da paleta de cores."; -Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; +Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated Blockly.Msg.COLOUR_RANDOM_TITLE = "cor aleatória"; Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Escolher cor de forma aleatória."; Blockly.Msg.COLOUR_RGB_BLUE = "azul"; @@ -35,7 +35,7 @@ Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Ignora o resto deste ci Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Atenção: Este bloco só pode ser usado dentro de um ciclo."; Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://code.google.com/p/blockly/wiki/Ciclos#para_cada"; Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST = "na lista"; -Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; +Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "para cada item"; Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Para cada item numa lista, define a variável \"%1\" para o item e então faz algumas instruções."; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; @@ -90,7 +90,7 @@ Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "obter e remover"; Blockly.Msg.LISTS_GET_INDEX_LAST = "último"; Blockly.Msg.LISTS_GET_INDEX_RANDOM = "aleatório"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "remover"; -Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; +Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Retorna o primeiro item de uma lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Retorna o item da lista na posição especificada. #1 é o último item."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Retorna o item na posição especificada da lista . #1 é o primeiro item."; @@ -113,7 +113,7 @@ Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://code.google.com/p/blockly/wiki/ Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "obtem sublista da primeira lista"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "obtem sublista de # a partir do final"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "obtem sublista de #"; -Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Cria uma cópia da porção especificada de uma lista."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "encontre a primeira ocorrência do item"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#Getting_Items_from_a_List"; @@ -201,7 +201,7 @@ Blockly.Msg.MATH_MODULO_TOOLTIP = "Retorna o resto da divisão de dois números. Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; Blockly.Msg.MATH_NUMBER_HELPURL = "http://pt.wikipedia.org/wiki/N%C3%BAmero"; Blockly.Msg.MATH_NUMBER_TOOLTIP = "Um número."; -Blockly.Msg.MATH_ONLIST_HELPURL = ""; +Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "média de uma lista"; Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "maior de uma lista"; Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "mediana de uma lista"; @@ -256,15 +256,15 @@ Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Retorna o seno de um grau (não radiano)."; Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Retorna a tangente de um grau (não radiano)."; Blockly.Msg.NEW_VARIABLE = "Nova variável..."; Blockly.Msg.NEW_VARIABLE_TITLE = "Nome da nova variável:"; -Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "com:"; -Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; +Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "http://pt.wikipedia.org/wiki/Sub-rotina"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Executa a função \"%1\"."; Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "http://pt.wikipedia.org/wiki/Sub-rotina"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Executa a função \"%1\" e usa o seu retorno."; Blockly.Msg.PROCEDURES_CREATE_DO = "Criar \"%1\""; -Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "faz algo"; Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "para"; @@ -297,7 +297,7 @@ Blockly.Msg.TEXT_CHARAT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#E Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "no texto"; Blockly.Msg.TEXT_CHARAT_LAST = "obter última letra"; Blockly.Msg.TEXT_CHARAT_RANDOM = "obter letra aleatória"; -Blockly.Msg.TEXT_CHARAT_TAIL = ""; +Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Retorna a letra na posição especificada."; Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Acrescentar um item ao texto."; Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "unir"; @@ -310,13 +310,13 @@ Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "no texto"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "obter subsequência a partir da primeira letra"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "obter subsequência de tamanho # a partir do final"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "obter subsequência de tamanho #"; -Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Retorna a parte especificada do texto."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "no texto"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "primeira ocorrência do texto"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "última ocorrência do texto"; -Blockly.Msg.TEXT_INDEXOF_TAIL = ""; +Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna 0 se o texto não for encontrado."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 está vazio"; @@ -345,8 +345,8 @@ Blockly.Msg.TEXT_TRIM_TOOLTIP = "Retorna uma cópia do texto com os espaços rem Blockly.Msg.VARIABLES_DEFAULT_NAME = "item"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Criar \"definir %1\""; Blockly.Msg.VARIABLES_GET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Get"; -Blockly.Msg.VARIABLES_GET_TAIL = ""; -Blockly.Msg.VARIABLES_GET_TITLE = ""; +Blockly.Msg.VARIABLES_GET_TAIL = ""; // untranslated +Blockly.Msg.VARIABLES_GET_TITLE = ""; // untranslated Blockly.Msg.VARIABLES_GET_TOOLTIP = "Retorna o valor desta variável."; Blockly.Msg.VARIABLES_SET_CREATE_GET = "Criar \"obter %1\""; Blockly.Msg.VARIABLES_SET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Set"; diff --git a/msg/js/sq.js b/msg/js/sq.js index 5e7426f10..61fc3e65e 100644 --- a/msg/js/sq.js +++ b/msg/js/sq.js @@ -18,7 +18,7 @@ Blockly.Msg.COLOUR_BLEND_TITLE = "Përzierje"; Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Perzien dy ngjyra së bashku me një raport të dhënë (0.0 - 1.0)."; Blockly.Msg.COLOUR_PICKER_HELPURL = "http://en.wikipedia.org/wiki/Color"; Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Zgjidh nje ngjyre nga nje game ngjyrash."; -Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; +Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated Blockly.Msg.COLOUR_RANDOM_TITLE = "ngjyre e rastesishme"; Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Zgjidhni një ngjyrë në mënyrë të rastësishme."; Blockly.Msg.COLOUR_RGB_BLUE = "blu"; @@ -35,7 +35,7 @@ Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Kapërce pjesën e mbet Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda unazës."; Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#for_each"; Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST = "ne liste"; -Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; +Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "per cdo produkt"; Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Per cdo produkt ne nje \"liste\" \"vendos\" ndryshoren '%1' produktit, dhe pastaj bej disa deklarata."; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; @@ -90,7 +90,7 @@ Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "merr dhe fshij"; Blockly.Msg.LISTS_GET_INDEX_LAST = "i fundit"; Blockly.Msg.LISTS_GET_INDEX_RANDOM = "i rastësishëm"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "largo"; -Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; +Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Rikthen tek artikulli i par në list."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Kthen një send në pozicionin e specifikuar në listë. #1 është sendi i fundit."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Kthen një send në pozicionin e specifikuar në listë. #1 është sendi i parë."; @@ -113,7 +113,7 @@ Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://code.google.com/p/blockly/wiki/ Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "merr nën-listën nga i pari"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "merr nën listën nga # nga fundi"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "merr nën-listën nga #"; -Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Krijon në kopje të pjesës së specifikuar të listës."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "gjen ndodhjen e parë të sendit"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#Getting_Items_from_a_List"; @@ -201,7 +201,7 @@ Blockly.Msg.MATH_MODULO_TOOLTIP = "Kthen mbetësin nga pjestimi i dy numrave."; Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "x"; Blockly.Msg.MATH_NUMBER_HELPURL = "http://en.wikipedia.org/wiki/Number"; Blockly.Msg.MATH_NUMBER_TOOLTIP = "Një numër."; -Blockly.Msg.MATH_ONLIST_HELPURL = ""; +Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "mesatarja e listës"; Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "numri më i madh i listës"; Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "mediana e listës"; @@ -256,15 +256,15 @@ Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Kthe kosinusin e nje kendi (jo ne radiant). Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Kthe tangentin e nje kendi (jo radiant)."; Blockly.Msg.NEW_VARIABLE = "Identifikatorë i ri..."; Blockly.Msg.NEW_VARIABLE_TITLE = "Emri i identifikatorit të ri:"; -Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "me:"; -Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; +Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Lësho funksionin e definuar nga përdoruesi '%1'."; Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Lëho funksionin e definuar nga përdoruesi '%1' dhe përdor daljen e tij."; Blockly.Msg.PROCEDURES_CREATE_DO = "Krijo '%1'"; -Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "bëj diqka"; Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "te"; @@ -297,7 +297,7 @@ Blockly.Msg.TEXT_CHARAT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#E Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "ne tekst"; Blockly.Msg.TEXT_CHARAT_LAST = "merr shkronjen e fundit"; Blockly.Msg.TEXT_CHARAT_RANDOM = "merr nje shkronje te rastesishme"; -Blockly.Msg.TEXT_CHARAT_TAIL = ""; +Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Kthe nje shkronje nga nje pozicion i caktuar."; Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Shto nje gje ne tekst"; Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "bashkangjit"; @@ -310,20 +310,20 @@ Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "ne tekst"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "merr vlerat qe vazhdojne me shkronjen e pare"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "merr nenvargun nga shkronja # nga fundi"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "Merr nenvargun nga shkronja #"; -Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Pergjigjet me nje pjese te caktuar teksti."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "ne tekst"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "gjej rastisjen e pare te tekstit"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "gjej rastisjen e fundit te tekstit"; -Blockly.Msg.TEXT_INDEXOF_TAIL = ""; +Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Pergjigjet me indeksin e pare/fundit te rastisjes se tekstit te pare ne tekstin e dyte. Pergjigjet me 0 ne qofte se teksti nuk u gjet."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 eshte bosh"; Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Kthehet e vertete neqoftese teksti i dhene eshte bosh."; Blockly.Msg.TEXT_JOIN_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_creation"; -Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "krijo tekst me "; -Blockly.Msg.TEXT_JOIN_TOOLTIP = "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende "; +Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "krijo tekst me"; +Blockly.Msg.TEXT_JOIN_TOOLTIP = "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende"; Blockly.Msg.TEXT_LENGTH_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; Blockly.Msg.TEXT_LENGTH_TITLE = "gjatesi %1"; Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Pergjigjet me nje numer shkronjash (duke perfshire hapesire) ne tekstin e dhene."; @@ -345,8 +345,8 @@ Blockly.Msg.TEXT_TRIM_TOOLTIP = "Pergjigju me nje kopje te tekstit me hapesira t Blockly.Msg.VARIABLES_DEFAULT_NAME = "send"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Krijo 'vendos %1"; Blockly.Msg.VARIABLES_GET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Get"; -Blockly.Msg.VARIABLES_GET_TAIL = ""; -Blockly.Msg.VARIABLES_GET_TITLE = ""; +Blockly.Msg.VARIABLES_GET_TAIL = ""; // untranslated +Blockly.Msg.VARIABLES_GET_TITLE = ""; // untranslated Blockly.Msg.VARIABLES_GET_TOOLTIP = "Pergjigjet me nje vlere te kesaj variable."; Blockly.Msg.VARIABLES_SET_CREATE_GET = "Krijo 'merr %1"; Blockly.Msg.VARIABLES_SET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Set"; diff --git a/msg/js/sv.js b/msg/js/sv.js index b61942f42..cce29783e 100644 --- a/msg/js/sv.js +++ b/msg/js/sv.js @@ -41,7 +41,7 @@ Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "För varje objekt i en lista, ange varia Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY = "från %1 till %2 med %3"; Blockly.Msg.CONTROLS_FOR_INPUT_WITH = "räkna med"; -Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Låt variabeln %1 räkna upp från starttalet till sluttalet men det specificerade intervallet, och utför blocken i det omgivande blocket."; +Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Låt variabeln %1 ta värden från starttalet till sluttalet, beräknat med det angivna intervallet, och utför de angivna blocken."; Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Lägg till ett villkor blocket \"om\"."; Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Lägg till ett sista villkor som täcker alla alternativ som är kvar för \"if\"-blocket."; Blockly.Msg.CONTROLS_IF_HELPURL = "http://code.google.com/p/blockly/wiki/If_Then"; @@ -78,12 +78,12 @@ Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://en.wikipedia.org/wiki/Linked_l Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "skapa tom lista"; Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Ger tillbaka en lista utan någon data, alltså med längden 0"; Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "lista"; -Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"lista\"-blocket."; +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"list\"-blocket."; Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "skapa lista med"; Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Lägg till ett föremål till listan."; Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Skapa en lista med valfritt antal föremål."; Blockly.Msg.LISTS_GET_INDEX_FIRST = "första"; -Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# från slut"; +Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# från slutet"; Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#"; Blockly.Msg.LISTS_GET_INDEX_GET = "hämta"; Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "hämta och ta bort"; @@ -96,14 +96,14 @@ Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Ger tillbaka objektet på de Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Ger tillbaka objektet på den efterfrågade positionen i en lista. #1 är det första objektet."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returnerar det sista objektet i en lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returnerar ett slumpmässigt objekt i en lista."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Tar bort och returnerar det första objektet i en lista."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "Tar bort och ger tillbaka objektet på den efterfrågade positionen i en lista. #1 är det sista objektet."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "Tar bort och ger tillbaka objektet på den efterfrågade positionen i en lista. #1 är det första objektet."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Tar bort och returnerar det sista objektet i en lista."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Tar bort och returnerar ett slumpmässigt objekt i en lista."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Tar bort och återställer det första objektet i en lista."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "Tar bort och återställer objektet på den specificerade positionen i en lista. #1 är det sista objektet."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "Tar bort och återställer objektet på den specificerade positionen i en lista. #1 är det första objektet."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Tar bort och återställer det sista objektet i en lista."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Tar bort och återställer ett slumpmässigt objekt i en lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Tar bort det första objektet i en lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END = "Tar bort objektet på den efterfrågade positionen i en lista. #1 är det sista objektet."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "Tar bort objektet på den efterfrågade positionen i en lista. #1 är det första objektet."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "Tar bort objektet på den specificerade positionen i en lista. #1 är det första objektet."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Tar bort det sista objektet i en lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Tar bort en slumpmässig post i en lista."; Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "till # från slutet"; @@ -115,10 +115,10 @@ Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "få underlista från # från slu Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "få underlista från #"; Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Skapar en kopia av den specificerade delen av en lista."; -Blockly.Msg.LISTS_INDEX_OF_FIRST = "hitta första förekomsten av föremålet"; +Blockly.Msg.LISTS_INDEX_OF_FIRST = "hitta första förekomsten av objektet"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#Getting_Items_from_a_List"; -Blockly.Msg.LISTS_INDEX_OF_LAST = "hitta sista förekomsten av föremålet"; -Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Ger tillbaka den första/sista förekomsten av objektet i listan. Ger tillbaka 0 om objektet inte hittas."; +Blockly.Msg.LISTS_INDEX_OF_LAST = "hitta sista förekomsten av objektet"; +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Ger tillbaka den första/sista förekomsten av objektet i listan. Ger tillbaka 0 om texten inte hittas."; Blockly.Msg.LISTS_INLIST = "i listan"; Blockly.Msg.LISTS_IS_EMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#is_empty"; Blockly.Msg.LISTS_IS_EMPTY_TITLE = "%1 är tom"; @@ -178,7 +178,7 @@ Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Returnerar differensen mellan de tv Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Returnerar produkten av de två talen."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Ger tillbaka det första talet upphöjt till det andra talet."; Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg.MATH_CHANGE_INPUT_BY = "till"; +Blockly.Msg.MATH_CHANGE_INPUT_BY = "med"; Blockly.Msg.MATH_CHANGE_TITLE_CHANGE = "ändra"; Blockly.Msg.MATH_CHANGE_TOOLTIP = "Lägg till ett tal till variabeln '%1'."; Blockly.Msg.MATH_CONSTANT_HELPURL = "https://sv.wikipedia.org/wiki/Matematisk_konstant"; @@ -190,14 +190,14 @@ Blockly.Msg.MATH_DIVISION_SYMBOL = "÷"; Blockly.Msg.MATH_IS_DIVISIBLE_BY = "är delbart med"; Blockly.Msg.MATH_IS_EVEN = "är jämnt"; Blockly.Msg.MATH_IS_NEGATIVE = "är negativt"; -Blockly.Msg.MATH_IS_ODD = "är udda"; +Blockly.Msg.MATH_IS_ODD = "är ojämnt"; Blockly.Msg.MATH_IS_POSITIVE = "är positivt"; Blockly.Msg.MATH_IS_PRIME = "är ett primtal"; -Blockly.Msg.MATH_IS_TOOLTIP = "Kontrollera om ett tal är jämnt, udda, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt."; +Blockly.Msg.MATH_IS_TOOLTIP = "Kontrollera om ett tal är jämnt, ojämnt, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt."; Blockly.Msg.MATH_IS_WHOLE = "är helt"; Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; Blockly.Msg.MATH_MODULO_TITLE = "resten av %1 ÷ %2"; -Blockly.Msg.MATH_MODULO_TOOLTIP = "Returnerar kvoten från divisionen av två tal."; +Blockly.Msg.MATH_MODULO_TOOLTIP = "Returnerar kvoten från divisionen av de två talen."; Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; Blockly.Msg.MATH_NUMBER_HELPURL = "https://sv.wikipedia.org/wiki/Tal"; Blockly.Msg.MATH_NUMBER_TOOLTIP = "Ett tal."; @@ -212,7 +212,7 @@ Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "standardavvikelsen i listan"; Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "summan av listan"; Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Ger tillbaka medelvärdet (aritmetiskt) av de numeriska värdena i listan."; Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Ger tillbaka det största talet i listan."; -Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Ger tillbaka medianen av talen i listan."; +Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Returnerar medianen av talen i listan."; Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Ger tillbaka det minsta talet i listan."; Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Ger tillbaka en lista med de(t) vanligaste objekte(t/n) i listan."; Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Returnerar ett slumpmässigt element från listan."; @@ -266,9 +266,9 @@ Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Kör den användargjorda funktionen Blockly.Msg.PROCEDURES_CREATE_DO = "Skapa '%1'"; Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://sv.wikipedia.org/wiki/Funktion_%28programmering%29"; -Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "utför någonting"; -Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "till"; -Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Skapar en funktion med ingen utdata."; +Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "göra något"; +Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "för att"; +Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Skapar en funktion utan output."; Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://sv.wikipedia.org/wiki/Funktion_%28programmering%29"; Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "returnera"; Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Skapar en funktion med output."; @@ -301,21 +301,21 @@ Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Ger tillbaka bokstaven på den specificerade positionen."; Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Lägg till ett föremål till texten."; Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "sammanfoga"; -Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblocket."; +Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblock."; Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "till bokstav # från slutet"; Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "till bokstav #"; Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "till sista bokstaven"; Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "http://code.google.com/p/blockly/wiki/Text#Extracting_a_region_of_text"; Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "i texten"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "få textdel från första bokstaven"; -Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "få textdel från bokstav # till slutet"; +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "få textdel från bokstav # från slutet"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "få textdel från bokstav #"; Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Ger tillbaka en viss del av texten."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "i texten"; -Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "hitta första textförekomsten"; -Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "hitta sista textförekomsten"; +Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "hitta första förekomsten av texten"; +Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "hitta sista förekomsten av texten"; Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Ger tillbaka indexet för den första/sista förekomsten av första texten i den andra texten. Ger tillbaka 0 om texten inte hittas."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; @@ -329,18 +329,18 @@ Blockly.Msg.TEXT_LENGTH_TITLE = "längden på %1"; Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Ger tillbaka antalet bokstäver (inklusive mellanslag) i den angivna texten."; Blockly.Msg.TEXT_PRINT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Printing_text"; Blockly.Msg.TEXT_PRINT_TITLE = "skriv %1"; -Blockly.Msg.TEXT_PRINT_TOOLTIP = "Skriv angivna texten, talet eller annat värde."; +Blockly.Msg.TEXT_PRINT_TOOLTIP = "Skriv den angivna texten, talet eller annat värde."; Blockly.Msg.TEXT_PROMPT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Getting_input_from_the_user"; Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Fråga användaren efter ett tal."; Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Fråga användaren efter lite text."; Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "fråga efter ett tal med meddelande"; -Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "fråga användaren efter text med meddelande"; +Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "fråga efter text med meddelande"; Blockly.Msg.TEXT_TEXT_HELPURL = "https://sv.wikipedia.org/wiki/Str%C3%A4ng_%28data%29"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "En bokstav, ord eller textrad."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "ta bort mellanrum från båda sidorna"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "ta bort mellanrum från vänstra sidan"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "ta bort mellanrum från högra sidan"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "ta bort mellanrum från båda sidorna av"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "ta bort mellanrum från vänstra sidan av"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "ta bort mellanrum från högra sidan av"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Returnerar en kopia av texten med borttagna mellanrum från en eller båda ändar."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "föremål"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Skapa \"välj %1\""; diff --git a/msg/js/th.js b/msg/js/th.js index 6a3ba5353..f92320dd3 100644 --- a/msg/js/th.js +++ b/msg/js/th.js @@ -37,20 +37,20 @@ Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://code.google.com/p/blockly/wiki/L Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST = "ในรายการ"; Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "วนซ้ำทุกรายการ"; -Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "ทำซ้ำทุกรายการ กำหนดค่าตัวแปร '%1' ตามรายการ และทำตามคำสั่งที่กำหนดไว้"; +Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "ทำซ้ำทุกรายการ กำหนดค่าตัวแปร \"%1\" ตามรายการ และทำตามคำสั่งที่กำหนดไว้"; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; // untranslated Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY = "จาก %1 จนถึง %2 เปลี่ยนค่าทีละ %3"; Blockly.Msg.CONTROLS_FOR_INPUT_WITH = "นับ"; -Blockly.Msg.CONTROLS_FOR_TOOLTIP = "ตัวแปร '%1' จะมีค่าตั้งแต่จำนวนเริ่มต้น ไปจนถึงจำนวนสิ้นสุด โดยมีการเปลี่ยนแปลงตามจำนวนที่กำหนด"; -Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "กำหนดเงื่อนไขของบล็อก 'ถ้า'"; -Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก 'ถ้า'"; +Blockly.Msg.CONTROLS_FOR_TOOLTIP = "ตัวแปร \"%1\" จะมีค่าตั้งแต่จำนวนเริ่มต้น ไปจนถึงจำนวนสิ้นสุด โดยมีการเปลี่ยนแปลงตามจำนวนที่กำหนด"; +Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "กำหนดเงื่อนไขของบล็อก \"ถ้า\""; +Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก \"ถ้า\""; Blockly.Msg.CONTROLS_IF_HELPURL = "https://code.google.com/p/blockly/wiki/If_Then"; // untranslated -Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "เพิ่ม ลบ หรือจัดเรียงบล็อก 'ถ้า' นี้ใหม่"; +Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "เพิ่ม ลบ หรือจัดเรียงบล็อก \"ถ้า\" นี้ใหม่"; Blockly.Msg.CONTROLS_IF_MSG_ELSE = "นอกเหนือจากนี้"; Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "นอกเหนือจากนี้ ถ้า"; Blockly.Msg.CONTROLS_IF_MSG_IF = "ถ้า"; -Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "ว่าเงื่อนไขเป็นจริง ก็จะ 'ทำ' ตามที่กำหนด"; -Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "ถ้าเงื่อนไขเป็นจริง ก็จะ 'ทำ' ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ 'นอกเหนือจากนี้'"; +Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "ว่าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด"; +Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ \"นอกเหนือจากนี้\""; Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำตามคำสั่งในบล็อกแรก แต่ถ้าไม่ก็จะไปตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามเงื่อนไขในบล็อกที่สองนี้"; Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำคำสั่งในบล็อกแรก จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าเงื่อนไขแรกเป็นเท็จ ก็จะทำการตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามคำสั่งในบล็อกที่สอง จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าทั้งเงื่อนไขแรกและเงื่อนไขที่สองเป็นเท็จทั้งหมด ก็จะมาทำบล็อกที่สาม"; Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; @@ -148,28 +148,28 @@ Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://code.google.com/p/blockly/wiki/True Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "คืนค่าเป็นจริงหรือเท็จ"; Blockly.Msg.LOGIC_BOOLEAN_TRUE = "จริง"; Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://th.wikipedia.org/wiki/อสมการ"; -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "คืนค่าเป็น 'จริง' ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน"; -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "คืนค่าเป็น 'จริง' ถ้าค่าแรกมากกว่าค่าที่สอง"; -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "คืนค่าเป็น 'จริง' ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง"; -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "คืนค่าเป็น 'จริง' ถ้าค่าแรกน้อยกว่าค่าที่สอง"; -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "คืนค่าเป็น 'จริง' ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง"; -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "คืนค่าเป็น 'จริง' ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน"; +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน"; +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าค่าที่สอง"; +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง"; +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าค่าที่สอง"; +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง"; +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน"; Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://code.google.com/p/blockly/wiki/Not"; // untranslated Blockly.Msg.LOGIC_NEGATE_TITLE = "ไม่ %1"; -Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "คืนค่าเป็น 'จริง' ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น 'เท็จ' ถ้าค่าที่ใส่เป็นจริง"; +Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น \"เท็จ\" ถ้าค่าที่ใส่เป็นจริง"; Blockly.Msg.LOGIC_NULL = "ไม่กำหนด"; Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg.LOGIC_NULL_TOOLTIP = "คืนค่า 'ไม่กำหนด'"; +Blockly.Msg.LOGIC_NULL_TOOLTIP = "คืนค่า \"ไม่กำหนด\""; Blockly.Msg.LOGIC_OPERATION_AND = "และ"; Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://code.google.com/p/blockly/wiki/And_Or"; // untranslated Blockly.Msg.LOGIC_OPERATION_OR = "หรือ"; -Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "คืนค่าเป็น 'จริง' ถ้าค่าทั้งสองค่าเป็นจริง"; -Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "คืนค่าเป็น 'จริง' ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง"; +Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "คืนค่าเป็น \"จริง\" ถ้าค่าทั้งสองค่าเป็นจริง"; +Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "คืนค่าเป็น \"จริง\" ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง"; Blockly.Msg.LOGIC_TERNARY_CONDITION = "ทดสอบ"; Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:"; // untranslated Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "ถ้า เป็นเท็จ"; Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "ถ้า เป็นจริง"; -Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "ตรวจสอบเงื่อนไขใน 'ทดสอบ' ถ้าเงื่อนไขเป็นจริง จะคืนค่า 'ถ้า เป็นจริง' ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า 'ถ้า เป็นเท็จ'"; +Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "ตรวจสอบเงื่อนไขใน \"ทดสอบ\" ถ้าเงื่อนไขเป็นจริง จะคืนค่า \"ถ้า เป็นจริง\" ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า \"ถ้า เป็นเท็จ\""; Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; // untranslated Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://th.wikipedia.org/wiki/เลขคณิต"; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "คืนค่าผลรวมของตัวเลขทั้งสองจำนวน"; @@ -180,7 +180,7 @@ Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "คืนค่าผลการ Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; Blockly.Msg.MATH_CHANGE_INPUT_BY = "เป็น"; Blockly.Msg.MATH_CHANGE_TITLE_CHANGE = "เปลี่ยนค่า"; -Blockly.Msg.MATH_CHANGE_TOOLTIP = "เพิ่มค่าของตัวแปร '%1'"; +Blockly.Msg.MATH_CHANGE_TOOLTIP = "เพิ่มค่าของตัวแปร \"%1\""; Blockly.Msg.MATH_CONSTANT_HELPURL = "https://th.wikipedia.org/wiki/ค่าคงตัวทางคณิตศาสตร์"; Blockly.Msg.MATH_CONSTANT_TOOLTIP = "คืนค่าคงตัวทางคณิตศาสตร์ที่พบบ่อยๆ เช่น π (3.141…), e (2.718…), φ (1.618…), รากที่สอง (1.414…), รากที่ ½ (0.707…), ∞ (อนันต์)"; Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated @@ -260,10 +260,10 @@ Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "ด้วย:"; Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_(computer_science)"; -Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ '%1'"; +Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\""; Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_(computer_science)"; -Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ '%1' และใช้ผลลัพธ์ของมัน"; -Blockly.Msg.PROCEDURES_CREATE_DO = "สร้าง '%1'"; +Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\" และใช้ผลลัพธ์ของมัน"; +Blockly.Msg.PROCEDURES_CREATE_DO = "สร้าง \"%1\""; Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "ทำอะไรบางอย่าง"; @@ -280,11 +280,11 @@ Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "ชื่อนำเข้า:"; Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "นำเข้า"; Blockly.Msg.REMOVE_COMMENT = "เอาคำอธิบายออก"; Blockly.Msg.RENAME_VARIABLE = "เปลี่ยนชื่อตัวแปร..."; -Blockly.Msg.RENAME_VARIABLE_TITLE = "เปลี่ยนชื่อ '%1' เป็น:"; +Blockly.Msg.RENAME_VARIABLE_TITLE = "เปลี่ยนชื่อ \"%1\" เป็น:"; Blockly.Msg.TEXT_APPEND_APPENDTEXT = "ต่อด้วยข้อความ"; Blockly.Msg.TEXT_APPEND_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Text_modification"; // untranslated Blockly.Msg.TEXT_APPEND_TO = "นำเอา"; -Blockly.Msg.TEXT_APPEND_TOOLTIP = "ต่อข้อความให้ตัวแปร '%1'"; +Blockly.Msg.TEXT_APPEND_TOOLTIP = "ต่อข้อความให้ตัวแปร \"%1\""; Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Adjusting_text_case"; // untranslated Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "เปลี่ยนเป็น ตัวพิมพ์เล็ก"; Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "เปลี่ยนเป็น ตัวอักษรแรกเป็นตัวพิมพ์ใหญ่"; @@ -338,17 +338,17 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "แสดงหน้าต่างข้ Blockly.Msg.TEXT_TEXT_HELPURL = "https://th.wikipedia.org/wiki/สายอักขระ"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "ตัวหนังสือ คำ หรือข้อความ"; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "ลบช่องว่างทั้งสองข้าง"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "ลบช่องว่างด้านหน้า"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "ลบช่องว่างข้างท้าย"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "ลบช่องว่างทั้งสองข้างของ"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "ลบช่องว่างด้านหน้าของ"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "ลบช่องว่างข้างท้ายของ"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "คืนค่าสำเนาของข้อความที่ลบเอาช่องว่างหน้าและหลังข้อความออกแล้ว"; Blockly.Msg.VARIABLES_DEFAULT_NAME = "รายการ"; -Blockly.Msg.VARIABLES_GET_CREATE_SET = "สร้าง 'กำหนด %1'"; +Blockly.Msg.VARIABLES_GET_CREATE_SET = "สร้าง \"กำหนด %1\""; Blockly.Msg.VARIABLES_GET_HELPURL = "https://code.google.com/p/blockly/wiki/Variables#Get"; // untranslated Blockly.Msg.VARIABLES_GET_TAIL = ""; // untranslated Blockly.Msg.VARIABLES_GET_TITLE = ""; // untranslated Blockly.Msg.VARIABLES_GET_TOOLTIP = "คืนค่าของตัวแปรนี้"; -Blockly.Msg.VARIABLES_SET_CREATE_GET = "สร้าง 'get %1'"; +Blockly.Msg.VARIABLES_SET_CREATE_GET = "สร้าง \"get %1\""; Blockly.Msg.VARIABLES_SET_HELPURL = "https://code.google.com/p/blockly/wiki/Variables#Set"; // untranslated Blockly.Msg.VARIABLES_SET_TAIL = "จนถึง"; Blockly.Msg.VARIABLES_SET_TITLE = "กำหนด"; diff --git a/msg/js/tl.js b/msg/js/tl.js index 9adda1c32..75d647f34 100644 --- a/msg/js/tl.js +++ b/msg/js/tl.js @@ -18,7 +18,7 @@ Blockly.Msg.COLOUR_BLEND_TITLE = "halo"; Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Paghalo ng dalawang kulay kasama ng ibinigay na proporsyon (0.0 - 1.0)."; Blockly.Msg.COLOUR_PICKER_HELPURL = "http://en.wikipedia.org/wiki/Color"; Blockly.Msg.COLOUR_PICKER_TOOLTIP = "pagpili ng kulay sa paleta."; -Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; +Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated Blockly.Msg.COLOUR_RANDOM_TITLE = "iba ibang kulay"; Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "pagpili ng iba't ibang kulay."; Blockly.Msg.COLOUR_RGB_BLUE = "asul"; @@ -35,12 +35,12 @@ Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Laktawan ang natitirang Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Babala: Ang block ito ay maaari lamang magamit sa loob ng loop."; Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#for_each"; Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST = "sa listahan"; -Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; +Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL = ""; // untranslated Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM = "sa bawat bagay"; Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Para sa bawat item sa isang list, i-set ang variable ng '% 1' sa mga item, at pagkatapos ay gumawa ng ilang mga statements."; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://code.google.com/p/blockly/wiki/Loops#count_with"; Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY = "mula %1 hanggang %2 ng %3"; -Blockly.Msg.CONTROLS_FOR_INPUT_WITH = "bilangin "; +Blockly.Msg.CONTROLS_FOR_INPUT_WITH = "bilangin"; Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Magkaroon ng mga variable na %1 na tanggalin ng mga halaga mula sa simulang numero hanggang sa dulong numero, at bilangin sa pamamagitan ng tinukoy na agwat, at gawin ang mga tinukoy na mga blocks."; Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Mag dagdag ng condition sa if block."; Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Mag Add ng final, kunin lahat ng condition sa if block."; @@ -49,7 +49,7 @@ Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "Mag Add, remove o kaya mag reorder ng sect Blockly.Msg.CONTROLS_IF_MSG_ELSE = "else"; Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "else if"; Blockly.Msg.CONTROLS_IF_MSG_IF = "kung"; -Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "kung ang value ay true, gagawin ang do statements. "; +Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "kung ang value ay true, gagawin ang do statements."; Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "Kung ang value ay true, gagawin ang unang block ng do statements. Kung hindi, gagawin ang pangalawang block ng statement."; Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "Kung ang unang value ay true, gagawin ang first block ng statement. Kung hindi, kung ang second value ay true, gagawin ang second block ng statement."; Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "Kung ang first value ay true, gagawin ang first block ng statement. Kung hindi true ang second value, gagawin ang second block ng statement. Kung wala sa mga values ay true, gagawin ang last block ng statements."; @@ -90,7 +90,7 @@ Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "kunin at tanggalin"; Blockly.Msg.LISTS_GET_INDEX_LAST = "huli"; Blockly.Msg.LISTS_GET_INDEX_RANDOM = "nang hindi pinipili"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "tanggalin"; -Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; +Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Ibalik ang unang item sa list."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Ibalik ang item sa tinakdang posisyon sa list. #1 ay ang huling item."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Ibalik ang item sa itinakdang posisyon sa list. #1 ay ang unang item."; @@ -113,7 +113,7 @@ Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://code.google.com/p/blockly/wiki/ Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "pag kuha ng sub-list mula sa una"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "pag kuha ng sub-list mula sa # mula huli"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "pag kuha ng sub-list mula #"; -Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Gumagawa ng kopya ng tinukoy na bahagi ng list."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "Hanapin ang unang pangyayari ng item"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://code.google.com/p/blockly/wiki/Lists#Pagkuha_ng_Items_mula_sa_List"; @@ -201,7 +201,7 @@ Blockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two nu Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; Blockly.Msg.MATH_NUMBER_HELPURL = "http://en.wikipedia.org/wiki/Number"; Blockly.Msg.MATH_NUMBER_TOOLTIP = "A number."; -Blockly.Msg.MATH_ONLIST_HELPURL = ""; +Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "average of list"; Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "max of list"; Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "median of list"; @@ -256,15 +256,15 @@ Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian)."; Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian)."; Blockly.Msg.NEW_VARIABLE = "New variable..."; Blockly.Msg.NEW_VARIABLE_TITLE = "New variable name:"; -Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "with:"; -Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; +Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = ""; // untranslated Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'."; Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function '%1' and use its output."; Blockly.Msg.PROCEDURES_CREATE_DO = "Create '%1'"; -Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "do something"; Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "to"; @@ -297,7 +297,7 @@ Blockly.Msg.TEXT_CHARAT_HELPURL = "https://code.google.com/p/blockly/wiki/Text#E Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "in text"; Blockly.Msg.TEXT_CHARAT_LAST = "get last letter"; Blockly.Msg.TEXT_CHARAT_RANDOM = "get random letter"; -Blockly.Msg.TEXT_CHARAT_TAIL = ""; +Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position."; Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text."; Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "join"; @@ -310,13 +310,13 @@ Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "in text"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "get substring from first letter"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "get substring from letter # from end"; Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "get substring from letter #"; -Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text."; Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Finding_text"; Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "in text"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "find first occurrence of text"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "find last occurrence of text"; -Blockly.Msg.TEXT_INDEXOF_TAIL = ""; +Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of first text in the second text. Returns 0 if text is not found."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Checking_for_empty_text"; Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty"; @@ -345,8 +345,8 @@ Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed f Blockly.Msg.VARIABLES_DEFAULT_NAME = "item"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'"; Blockly.Msg.VARIABLES_GET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Get"; -Blockly.Msg.VARIABLES_GET_TAIL = ""; -Blockly.Msg.VARIABLES_GET_TITLE = ""; +Blockly.Msg.VARIABLES_GET_TAIL = ""; // untranslated +Blockly.Msg.VARIABLES_GET_TITLE = ""; // untranslated Blockly.Msg.VARIABLES_GET_TOOLTIP = "Returns the value of this variable."; Blockly.Msg.VARIABLES_SET_CREATE_GET = "Create 'get %1'"; Blockly.Msg.VARIABLES_SET_HELPURL = "http://code.google.com/p/blockly/wiki/Variables#Set"; diff --git a/msg/js/vi.js b/msg/js/vi.js index 980aad48d..c61049350 100644 --- a/msg/js/vi.js +++ b/msg/js/vi.js @@ -338,9 +338,9 @@ Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "Xin người dùng nhập vào văn bản v Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/string _(computer_science)"; Blockly.Msg.TEXT_TEXT_TOOLTIP = "Một ký tự, một từ, hay một dòng."; Blockly.Msg.TEXT_TRIM_HELPURL = "https://code.google.com/p/blockly/wiki/Text#Trimming_%28removing%29_spaces"; // untranslated -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "xóa khoảng trắng từ bên trái và phải"; -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "xóa khoảng trắng từ bên trái"; -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "xóa khoảng trắng từ bên phải"; +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "cắt các không gian từ cả hai mặt của"; +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "cắt các không gian từ bên trái của"; +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "cắt các không gian từ bên phải của"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Hoàn trả bản sao của văn bản sau khi xóa khoảng trắng từ một hoặc hai bên."; Blockly.Msg.VARIABLES_DEFAULT_NAME = "vật"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Tạo mảnh \"đặt vào %1\""; diff --git a/msg/json/en.json b/msg/json/en.json index a7a9f56cd..e9200d94a 100644 --- a/msg/json/en.json +++ b/msg/json/en.json @@ -1,7 +1,7 @@ { "@metadata": { "author": "Ellen Spertus ", - "lastupdated": "2013-12-19 17:09:31.785924", + "lastupdated": "2014-01-02 13:49:43.650976", "locale": "en", "messagedocumentation" : "qqq" }, diff --git a/msg/json/qqq.json b/msg/json/qqq.json index 07a462d18..82b1e6387 100644 --- a/msg/json/qqq.json +++ b/msg/json/qqq.json @@ -1,10 +1,4 @@ { - "@metadata": { - "authors": [ - "Espertus", - "Shirayuki" - ] - }, "VARIABLES_DEFAULT_NAME": "default name - A simple, general default name for a variable, preferably short. For more context, see [[Translating:Blockly#infrequent_message_types]].", "DUPLICATE_BLOCK": "context menu - Make a copy of the selected block (and any blocks it contains).", "ADD_COMMENT": "context menu - Add a descriptive comment to the selected block.", @@ -352,4 +346,4 @@ "PROCEDURES_CREATE_DO": "context menu - This appears on the context menu for function definitions. Selecting it creates a block to call the function. \n\nParameters:\n* %1 - the name of the function.", "PROCEDURES_IFRETURN_TOOLTIP": "tooltip - If the first value is true, this causes the second value to be returned immediately from the enclosing function.", "PROCEDURES_IFRETURN_WARNING": "warning - This appears if the user tries to use this block outside of a function definition." -} \ No newline at end of file +} diff --git a/python_compressed.js b/python_compressed.js index b6132da94..3507ee547 100644 --- a/python_compressed.js +++ b/python_compressed.js @@ -3,46 +3,26 @@ Blockly.Python=new Blockly.Generator("Python");Blockly.Python.addReservedWords("and,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,with,yield,True,False,None,NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,abs,divmod,input,open,staticmethod,all,enumerate,int,ord,str,any,eval,isinstance,pow,sum,basestring,execfile,issubclass,print,super,bin,file,iter,property,tuple,bool,filter,len,range,type,bytearray,float,list,raw_input,unichr,callable,format,locals,reduce,unicode,chr,frozenset,long,reload,vars,classmethod,getattr,map,repr,xrange,cmp,globals,max,reversed,zip,compile,hasattr,memoryview,round,__import__,complex,hash,min,set,apply,delattr,help,next,setattr,buffer,dict,hex,object,slice,coerce,dir,id,oct,sorted,intern"); Blockly.Python.ORDER_ATOMIC=0;Blockly.Python.ORDER_COLLECTION=1;Blockly.Python.ORDER_STRING_CONVERSION=1;Blockly.Python.ORDER_MEMBER=2;Blockly.Python.ORDER_FUNCTION_CALL=2;Blockly.Python.ORDER_EXPONENTIATION=3;Blockly.Python.ORDER_UNARY_SIGN=4;Blockly.Python.ORDER_BITWISE_NOT=4;Blockly.Python.ORDER_MULTIPLICATIVE=5;Blockly.Python.ORDER_ADDITIVE=6;Blockly.Python.ORDER_BITWISE_SHIFT=7;Blockly.Python.ORDER_BITWISE_AND=8;Blockly.Python.ORDER_BITWISE_XOR=9;Blockly.Python.ORDER_BITWISE_OR=10; -Blockly.Python.ORDER_RELATIONAL=11;Blockly.Python.ORDER_LOGICAL_NOT=12;Blockly.Python.ORDER_LOGICAL_AND=13;Blockly.Python.ORDER_LOGICAL_OR=14;Blockly.Python.ORDER_CONDITIONAL=15;Blockly.Python.ORDER_LAMBDA=16;Blockly.Python.ORDER_NONE=99;Blockly.Python.INFINITE_LOOP_TRAP=null;Blockly.Python.FUNCTION_NAME_PLACEHOLDER_="{{{}}}";Blockly.Python.FUNCTION_NAME_PLACEHOLDER_REGEXP_=RegExp(Blockly.Python.FUNCTION_NAME_PLACEHOLDER_,"g"); +Blockly.Python.ORDER_RELATIONAL=11;Blockly.Python.ORDER_LOGICAL_NOT=12;Blockly.Python.ORDER_LOGICAL_AND=13;Blockly.Python.ORDER_LOGICAL_OR=14;Blockly.Python.ORDER_CONDITIONAL=15;Blockly.Python.ORDER_LAMBDA=16;Blockly.Python.ORDER_NONE=99;Blockly.Python.INFINITE_LOOP_TRAP=null; Blockly.Python.init=function(){Blockly.Python.definitions_=Object.create(null);Blockly.Python.functionNames_=Object.create(null);if(Blockly.Variables){Blockly.Python.variableDB_?Blockly.Python.variableDB_.reset():Blockly.Python.variableDB_=new Blockly.Names(Blockly.Python.RESERVED_WORDS_);for(var a=[],b=Blockly.Variables.allVariables(),c=0;c",GTE:">="}[a.getFieldValue("OP")],c=Blockly.Python.ORDER_RELATIONAL,d=Blockly.Python.valueToCode(a,"A",c)||"0";a=Blockly.Python.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -Blockly.Python.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"and":"or",c="and"==b?Blockly.Python.ORDER_LOGICAL_AND:Blockly.Python.ORDER_LOGICAL_OR,d=Blockly.Python.valueToCode(a,"A",c);a=Blockly.Python.valueToCode(a,"B",c);if(d||a){var e="and"==b?"True":"False";d||(d=e);a||(a=e)}else a=d="False";return[d+" "+b+" "+a,c]};Blockly.Python.logic_negate=function(a){return["not "+(Blockly.Python.valueToCode(a,"BOOL",Blockly.Python.ORDER_LOGICAL_NOT)||"True"),Blockly.Python.ORDER_LOGICAL_NOT]}; -Blockly.Python.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"True":"False",Blockly.Python.ORDER_ATOMIC]};Blockly.Python.logic_null=function(a){return["None",Blockly.Python.ORDER_ATOMIC]}; -Blockly.Python.logic_ternary=function(a){var b=Blockly.Python.valueToCode(a,"IF",Blockly.Python.ORDER_CONDITIONAL)||"False",c=Blockly.Python.valueToCode(a,"THEN",Blockly.Python.ORDER_CONDITIONAL)||"None";a=Blockly.Python.valueToCode(a,"ELSE",Blockly.Python.ORDER_CONDITIONAL)||"None";return[c+" if "+b+" else "+a,Blockly.Python.ORDER_CONDITIONAL]};Blockly.Python.loops={};Blockly.Python.controls_repeat=function(a){var b=parseInt(a.getFieldValue("TIMES"),10),c=Blockly.Python.statementToCode(a,"DO")||" pass\n";Blockly.Python.INFINITE_LOOP_TRAP&&(c=Blockly.Python.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+c);return"for "+Blockly.Python.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE)+" in range("+b+"):\n"+c}; -Blockly.Python.controls_repeat_ext=function(a){var b=Blockly.Python.valueToCode(a,"TIMES",Blockly.Python.ORDER_NONE)||"0",b=Blockly.isNumber(b)?parseInt(b,10):"int("+b+")",c=Blockly.Python.statementToCode(a,"DO")||" pass\n";Blockly.Python.INFINITE_LOOP_TRAP&&(c=Blockly.Python.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+a.id+"'")+c);return"for "+Blockly.Python.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE)+" in range("+b+"):\n"+c}; -Blockly.Python.controls_whileUntil=function(a){var b="UNTIL"==a.getFieldValue("MODE"),b=Blockly.Python.valueToCode(a,"BOOL",b?Blockly.Python.ORDER_LOGICAL_NOT:Blockly.Python.ORDER_NONE)||"False",c=Blockly.Python.statementToCode(a,"DO")||" pass\n";Blockly.Python.INFINITE_LOOP_TRAP&&(c=Blockly.Python.INFINITE_LOOP_TRAP.replace(/%1/g,'"'+a.id+'"')+c);"UNTIL"==a.getFieldValue("MODE")&&(b.match(/^\w+$/)||(b="("+b+")"),b="not "+b);return"while "+b+":\n"+c}; -Blockly.Python.controls_for=function(a){var b=Blockly.Python.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.Python.valueToCode(a,"FROM",Blockly.Python.ORDER_NONE)||"0",d=Blockly.Python.valueToCode(a,"TO",Blockly.Python.ORDER_NONE)||"0",e=Blockly.Python.valueToCode(a,"BY",Blockly.Python.ORDER_NONE)||"1",g=Blockly.Python.statementToCode(a,"DO")||" pass\n";Blockly.Python.INFINITE_LOOP_TRAP&&(g=Blockly.Python.INFINITE_LOOP_TRAP.replace(/%1/g,'"'+a.id+'"')+g);var f= -"",h=function(){return Blockly.Python.provideFunction_("upRange",["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):"," while start <= stop:"," yield start"," start += abs(step)"])},k=function(){return Blockly.Python.provideFunction_("downRange",["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):"," while start >= stop:"," yield start"," start -= abs(step)"])};a=function(a,b,c){return"("+a+" <= "+b+") and "+h()+"("+a+", "+b+", "+c+") or "+k()+ -"("+a+", "+b+", "+c+")"};if(Blockly.isNumber(c)&&Blockly.isNumber(d)&&Blockly.isNumber(e))c=parseFloat(c),d=parseFloat(d),e=Math.abs(parseFloat(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0==c&&1==e?d:c+", "+d,1!=e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=ca?Blockly.Python.ORDER_UNARY_SIGN:Blockly.Python.ORDER_ATOMIC]}; +Blockly.Python.scrub_=function(a,b){if(null===b)return"";var c="";if(!a.outputConnection||!a.outputConnection.targetConnection){var d=a.getCommentText();d&&(c+=this.prefixLines(d,"# ")+"\n");for(var e=0;ea?Blockly.Python.ORDER_UNARY_SIGN:Blockly.Python.ORDER_ATOMIC]}; Blockly.Python.math_arithmetic=function(a){var b={ADD:[" + ",Blockly.Python.ORDER_ADDITIVE],MINUS:[" - ",Blockly.Python.ORDER_ADDITIVE],MULTIPLY:[" * ",Blockly.Python.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",Blockly.Python.ORDER_MULTIPLICATIVE],POWER:[" ** ",Blockly.Python.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0],b=b[1],d=Blockly.Python.valueToCode(a,"A",b)||"0";a=Blockly.Python.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; Blockly.Python.math_single=function(a){var b=a.getFieldValue("OP"),c;if("NEG"==b)return c=Blockly.Python.valueToCode(a,"NUM",Blockly.Python.ORDER_UNARY_SIGN)||"0",["-"+c,Blockly.Python.ORDER_UNARY_SIGN];Blockly.Python.definitions_.import_math="import math";a="SIN"==b||"COS"==b||"TAN"==b?Blockly.Python.valueToCode(a,"NUM",Blockly.Python.ORDER_MULTIPLICATIVE)||"0":Blockly.Python.valueToCode(a,"NUM",Blockly.Python.ORDER_NONE)||"0";switch(b){case "ABS":c="math.fabs("+a+")";break;case "ROOT":c="math.sqrt("+ a+")";break;case "LN":c="math.log("+a+")";break;case "LOG10":c="math.log10("+a+")";break;case "EXP":c="math.exp("+a+")";break;case "POW10":c="math.pow(10,"+a+")";break;case "ROUND":c="round("+a+")";break;case "ROUNDUP":c="math.ceil("+a+")";break;case "ROUNDDOWN":c="math.floor("+a+")";break;case "SIN":c="math.sin("+a+" / 180.0 * math.pi)";break;case "COS":c="math.cos("+a+" / 180.0 * math.pi)";break;case "TAN":c="math.tan("+a+" / 180.0 * math.pi)"}if(c)return[c,Blockly.Python.ORDER_FUNCTION_CALL];switch(b){case "ASIN":c= "math.asin("+a+") / math.pi * 180";break;case "ACOS":c="math.acos("+a+") / math.pi * 180";break;case "ATAN":c="math.atan("+a+") / math.pi * 180";break;default:throw"Unknown math operator: "+b;}return[c,Blockly.Python.ORDER_MULTIPLICATIVE]}; Blockly.Python.math_constant=function(a){var b={PI:["math.pi",Blockly.Python.ORDER_MEMBER],E:["math.e",Blockly.Python.ORDER_MEMBER],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",Blockly.Python.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",Blockly.Python.ORDER_MEMBER],SQRT1_2:["math.sqrt(1.0 / 2)",Blockly.Python.ORDER_MEMBER],INFINITY:["float('inf')",Blockly.Python.ORDER_ATOMIC]};a=a.getFieldValue("CONSTANT");"INFINITY"!=a&&(Blockly.Python.definitions_.import_math="import math");return b[a]}; -Blockly.Python.math_number_property=function(a){var b=Blockly.Python.valueToCode(a,"NUMBER_TO_CHECK",Blockly.Python.ORDER_MULTIPLICATIVE)||"0",c=a.getFieldValue("PROPERTY"),d;if("PRIME"==c)return Blockly.Python.definitions_.import_math="import math",d=Blockly.Python.provideFunction_("isPrime",["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(n):"," # http://en.wikipedia.org/wiki/Primality_test#Naive_methods"," # If n is not a number but a string, try parsing it."," if type(n) not in (int, float, long):", +Blockly.Python.math_number_property=function(a){var b=Blockly.Python.valueToCode(a,"NUMBER_TO_CHECK",Blockly.Python.ORDER_MULTIPLICATIVE)||"0",c=a.getFieldValue("PROPERTY"),d;if("PRIME"==c)return Blockly.Python.definitions_.import_math="import math",d=Blockly.Python.provideFunction_("math_isPrime",["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(n):"," # https://en.wikipedia.org/wiki/Primality_test#Naive_methods"," # If n is not a number but a string, try parsing it."," if type(n) not in (int, float, long):", " try:"," n = float(n)"," except:"," return False"," if n == 2 or n == 3:"," return True"," # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3."," if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:"," return False"," # Check all the numbers of form 6k +/- 1, up to sqrt(n)."," for x in range(6, int(math.sqrt(n)) + 2, 6):"," if n % (x - 1) == 0 or n % (x + 1) == 0:"," return False"," return True"])+"("+b+")",[d,Blockly.Python.ORDER_FUNCTION_CALL]; switch(c){case "EVEN":d=b+" % 2 == 0";break;case "ODD":d=b+" % 2 == 1";break;case "WHOLE":d=b+" % 1 == 0";break;case "POSITIVE":d=b+" > 0";break;case "NEGATIVE":d=b+" < 0";break;case "DIVISIBLE_BY":a=Blockly.Python.valueToCode(a,"DIVISOR",Blockly.Python.ORDER_MULTIPLICATIVE);if(!a||"0"==a)return["False",Blockly.Python.ORDER_ATOMIC];d=b+" % "+a+" == 0"}return[d,Blockly.Python.ORDER_RELATIONAL]}; Blockly.Python.math_change=function(a){var b=Blockly.Python.valueToCode(a,"DELTA",Blockly.Python.ORDER_ADDITIVE)||"0";a=Blockly.Python.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE);return a+" = ("+a+" if type("+a+") in (int, float, long) else 0) + "+b+"\n"};Blockly.Python.math_round=Blockly.Python.math_single;Blockly.Python.math_trig=Blockly.Python.math_single; @@ -57,14 +37,33 @@ Blockly.Python.procedures_defreturn=function(a){for(var b=Blockly.Variables.allV a.id+'"')+d);var e=Blockly.Python.valueToCode(a,"RETURN",Blockly.Python.ORDER_NONE)||"";e?e=" return "+e+"\n":d||(d=" pass");for(var g=[],f=0;f",GTE:">="}[a.getFieldValue("OP")],c=Blockly.Python.ORDER_RELATIONAL,d=Blockly.Python.valueToCode(a,"A",c)||"0";a=Blockly.Python.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +Blockly.Python.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"and":"or",c="and"==b?Blockly.Python.ORDER_LOGICAL_AND:Blockly.Python.ORDER_LOGICAL_OR,d=Blockly.Python.valueToCode(a,"A",c);a=Blockly.Python.valueToCode(a,"B",c);if(d||a){var e="and"==b?"True":"False";d||(d=e);a||(a=e)}else a=d="False";return[d+" "+b+" "+a,c]};Blockly.Python.logic_negate=function(a){return["not "+(Blockly.Python.valueToCode(a,"BOOL",Blockly.Python.ORDER_LOGICAL_NOT)||"True"),Blockly.Python.ORDER_LOGICAL_NOT]}; +Blockly.Python.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"True":"False",Blockly.Python.ORDER_ATOMIC]};Blockly.Python.logic_null=function(a){return["None",Blockly.Python.ORDER_ATOMIC]}; +Blockly.Python.logic_ternary=function(a){var b=Blockly.Python.valueToCode(a,"IF",Blockly.Python.ORDER_CONDITIONAL)||"False",c=Blockly.Python.valueToCode(a,"THEN",Blockly.Python.ORDER_CONDITIONAL)||"None";a=Blockly.Python.valueToCode(a,"ELSE",Blockly.Python.ORDER_CONDITIONAL)||"None";return[c+" if "+b+" else "+a,Blockly.Python.ORDER_CONDITIONAL]};Blockly.Python.lists={};Blockly.Python.lists_create_empty=function(a){return["[]",Blockly.Python.ORDER_ATOMIC]};Blockly.Python.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c= stop:"," yield start"," start -= abs(step)"])};a=function(a,b,c){return"("+a+" <= "+b+") and "+h()+"("+a+", "+b+", "+c+") or "+k()+ +"("+a+", "+b+", "+c+")"};if(Blockly.isNumber(c)&&Blockly.isNumber(d)&&Blockly.isNumber(e))c=parseFloat(c),d=parseFloat(d),e=Math.abs(parseFloat(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0==c&&1==e?d:c+", "+d,1!=e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=c