diff options
Diffstat (limited to 'blockly/tests/generators/index.html')
-rw-r--r-- | blockly/tests/generators/index.html | 345 |
1 files changed, 345 insertions, 0 deletions
diff --git a/blockly/tests/generators/index.html b/blockly/tests/generators/index.html new file mode 100644 index 0000000..d227f60 --- /dev/null +++ b/blockly/tests/generators/index.html @@ -0,0 +1,345 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Blockly Generator Tests</title> +<script src="../../blockly_uncompressed.js"></script> + +<script src="../../generators/javascript.js"></script> +<script src="unittest_javascript.js"></script> +<script src="../../generators/javascript/logic.js"></script> +<script src="../../generators/javascript/loops.js"></script> +<script src="../../generators/javascript/math.js"></script> +<script src="../../generators/javascript/text.js"></script> +<script src="../../generators/javascript/lists.js"></script> +<script src="../../generators/javascript/colour.js"></script> +<script src="../../generators/javascript/variables.js"></script> +<script src="../../generators/javascript/procedures.js"></script> + +<script src="../../generators/python.js"></script> +<script src="unittest_python.js"></script> +<script src="../../generators/python/logic.js"></script> +<script src="../../generators/python/loops.js"></script> +<script src="../../generators/python/math.js"></script> +<script src="../../generators/python/text.js"></script> +<script src="../../generators/python/lists.js"></script> +<script src="../../generators/python/colour.js"></script> +<script src="../../generators/python/variables.js"></script> +<script src="../../generators/python/procedures.js"></script> + +<script src="../../generators/php.js"></script> +<script src="unittest_php.js"></script> +<script src="../../generators/php/logic.js"></script> +<script src="../../generators/php/loops.js"></script> +<script src="../../generators/php/math.js"></script> +<script src="../../generators/php/text.js"></script> +<script src="../../generators/php/lists.js"></script> +<script src="../../generators/php/colour.js"></script> +<script src="../../generators/php/variables.js"></script> +<script src="../../generators/php/procedures.js"></script> + +<script src="../../generators/lua.js"></script> +<script src="unittest_lua.js"></script> +<script src="../../generators/lua/logic.js"></script> +<script src="../../generators/lua/loops.js"></script> +<script src="../../generators/lua/math.js"></script> +<script src="../../generators/lua/text.js"></script> +<script src="../../generators/lua/lists.js"></script> +<script src="../../generators/lua/colour.js"></script> +<script src="../../generators/lua/variables.js"></script> +<script src="../../generators/lua/procedures.js"></script> + +<script src="../../generators/dart.js"></script> +<script src="unittest_dart.js"></script> +<script src="../../generators/dart/logic.js"></script> +<script src="../../generators/dart/loops.js"></script> +<script src="../../generators/dart/math.js"></script> +<script src="../../generators/dart/text.js"></script> +<script src="../../generators/dart/lists.js"></script> +<script src="../../generators/dart/colour.js"></script> +<script src="../../generators/dart/variables.js"></script> +<script src="../../generators/dart/procedures.js"></script> + +<script src="unittest.js"></script> +<script src="../../msg/messages.js"></script> +<script src="../../blocks/logic.js"></script> +<script src="../../blocks/loops.js"></script> +<script src="../../blocks/math.js"></script> +<script src="../../blocks/text.js"></script> +<script src="../../blocks/lists.js"></script> +<script src="../../blocks/colour.js"></script> +<script src="../../blocks/variables.js"></script> +<script src="../../blocks/procedures.js"></script> +<script> +'use strict'; + +var workspace = null; + +function start() { + workspace = Blockly.inject('blocklyDiv', + {grid: + {spacing: 25, + length: 3, + colour: '#ccc', + snap: true}, + media: '../../media/', + toolbox: document.getElementById('toolbox'), + zoom: {controls: true, wheel: true} + }); +} + +function loadXml() { + var dropdown = document.getElementById('testUrl'); + var url = dropdown.options[dropdown.selectedIndex].value; + if (!url) { + url = window.prompt('Enter URL of test file.'); + if (!url) { + return; + } + } + var xmlText = fetchFile(url); + if (xmlText !== null) { + fromXml(xmlText); + } +} + +function fetchFile(xmlUrl) { + try { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open('GET', xmlUrl, false); + xmlHttp.setRequestHeader('Content-Type', 'text/xml'); + xmlHttp.send(''); + } catch (e) { + // Attempt to diagnose the problem. + var msg = 'Error: Unable to load XML data.\n'; + if (window.location.protocol == 'file:') { + msg += 'This may be due to a security restriction preventing\n' + + 'access when using the file:// protocol.\n' + + 'Use an http webserver, or a less paranoid browser.\n'; + } + alert(msg + '\n' + e); + return null; + } + return xmlHttp.responseText; +} + +function fromXml(xmlText) { + var output = document.getElementById('importExport'); + output.value = xmlText; + output.scrollTop = 0; + output.scrollLeft = 0; + workspace.clear(); + try { + var xmlDoc = Blockly.Xml.textToDom(xmlText); + } catch (e) { + alert('Error parsing XML:\n' + e); + return; + } + Blockly.Xml.domToWorkspace(xmlDoc, workspace); +} + +function setOutput(text) { + var output = document.getElementById('importExport'); + output.value = text; + output.focus(); + output.select(); +} + +function toXml() { + var xmlDom = Blockly.Xml.workspaceToDom(workspace); + var xmlText = Blockly.Xml.domToPrettyText(xmlDom); + xmlText = xmlText.replace(/ id="\d+"/g, ''); + setOutput(xmlText); +} + +function toJavaScript() { + var oneBasedIndexing = document.getElementById('indexing').checked; + Blockly.JavaScript.ONE_BASED_INDEXING = oneBasedIndexing; + var code = '\'use strict\';\n\n' + code += Blockly.JavaScript.workspaceToCode(workspace); + setOutput(code); +} + +function toPython() { + var oneBasedIndexing = document.getElementById('indexing').checked; + Blockly.Python.ONE_BASED_INDEXING = oneBasedIndexing; + var code = Blockly.Python.workspaceToCode(workspace); + setOutput(code); +} + +function toPhp() { + var oneBasedIndexing = document.getElementById('indexing').checked; + Blockly.PHP.ONE_BASED_INDEXING = oneBasedIndexing; + var code = Blockly.PHP.workspaceToCode(workspace); + setOutput(code); +} + +function toLua() { + var code = Blockly.Lua.workspaceToCode(workspace); + setOutput(code); +} + +function toDart() { + var oneBasedIndexing = document.getElementById('indexing').checked; + Blockly.Dart.ONE_BASED_INDEXING = oneBasedIndexing; + var code = Blockly.Dart.workspaceToCode(workspace); + setOutput(code); +} +</script> + +<style> +html, body { + height: 100%; + overflow: hidden; +} +body { + background-color: #fff; + font-family: sans-serif; + margin: 0 5px; +} +h1 { + font-weight: normal; + font-size: 140%; +} +#blocklyDiv { + float: right; + height: 95%; + width: 69%; + margin-top: 5px; +} +#importExport { + height: 100%; + width: 100%; +} +</style> +</head> +<body onload="start()"> + + <div id="blocklyDiv"></div> + + <xml id="toolbox" style="display: none"> + <category name="Unit test" colour="65"> + <block type="unittest_main"></block> + <block type="unittest_assertequals"> + <value name="MESSAGE"> + <block type="text"> + <field name="TEXT"></field> + </block> + </value> + </block> + <block type="unittest_assertvalue"> + <value name="MESSAGE"> + <block type="text"> + <field name="TEXT"></field> + </block> + </value> + </block> + <block type="unittest_fail"></block> + <block type="unittest_adjustindex"></block> + </category> + <category name="Logic" colour="210"> + <block type="controls_if"></block> + <block type="logic_compare"></block> + <block type="logic_operation"></block> + <block type="logic_negate"></block> + <block type="logic_boolean"></block> + <block type="logic_null"></block> + <block type="logic_ternary"></block> + </category> + <category name="Loops" colour="120"> + <block type="controls_repeat_ext"></block> + <block type="controls_whileUntil"></block> + <block type="controls_for"></block> + <block type="controls_forEach"></block> + <block type="controls_flow_statements"></block> + </category> + <category name="Math" colour="230"> + <block type="math_number"></block> + <block type="math_arithmetic"></block> + <block type="math_single"></block> + <block type="math_trig"></block> + <block type="math_constant"></block> + <block type="math_number_property"></block> + <block type="math_round"></block> + <block type="math_on_list"></block> + <block type="math_modulo"></block> + <block type="math_constrain"></block> + <block type="math_random_int"></block> + <block type="math_random_float"></block> + </category> + <category name="Text" colour="160"> + <block type="text"></block> + <block type="text_join"></block> + <block type="text_append"></block> + <block type="text_length"></block> + <block type="text_isEmpty"></block> + <block type="text_indexOf"></block> + <block type="text_charAt"></block> + <block type="text_getSubstring"></block> + <block type="text_changeCase"></block> + <block type="text_trim"></block> + <block type="text_print"></block> + <block type="text_prompt_ext"></block> + </category> + <category name="Lists" colour="260"> + <block type="lists_create_empty"></block> + <block type="lists_create_with"></block> + <block type="lists_repeat"></block> + <block type="lists_length"></block> + <block type="lists_isEmpty"></block> + <block type="lists_indexOf"></block> + <block type="lists_getIndex"></block> + <block type="lists_setIndex"></block> + <block type="lists_getSublist"></block> + <block type="lists_sort"></block> + <block type="lists_split"></block> + </category> + <category name="Colour" colour="20"> + <block type="colour_picker"></block> + <block type="colour_random"></block> + <block type="colour_rgb"></block> + <block type="colour_blend"></block> + </category> + <sep></sep> + <category name="Variables" colour="330" custom="VARIABLE"></category> + <category name="Functions" colour="290" custom="PROCEDURE"></category> + </xml> + + <table height="95%" width="30%"><tr><td valign="top"> + <h1>Blockly Generator Tests</h1> + + <p> + <select id="testUrl"> + <option value="logic.xml">Logic</option> + <option value="loops1.xml">Loops 1 (repeat, while, foreach)</option> + <option value="loops2.xml">Loops 2 (count)</option> + <option value="loops3.xml">Loops 3 (continue, break)</option> + <option value="math.xml">Math</option> + <option value="text.xml">Text</option> + <option value="lists.xml">Lists</option> + <option value="colour.xml">Colour</option> + <option value="variables.xml">Variables</option> + <option value="functions.xml">Functions</option> + <option value="">Other...</option> + </select> + <input type="button" value="Load" onclick="loadXml()"> + </p> + + <p> + <input id="indexing" type="checkbox" checked> Generate with one-based indexing + </p> + + <p> + Generate: + <input type="button" value="XML" onclick="toXml()"> + <input type="button" value="JavaScript" onclick="toJavaScript()"> + <input type="button" value="Python" onclick="toPython()"> + <input type="button" value="PHP" onclick="toPhp()"> + <input type="button" value="Lua" onclick="toLua()"> + <input type="button" value="Dart" onclick="toDart()"> + </p> + </td></tr><tr><td height="99%"> + <textarea id="importExport" readonly="readonly" wrap="off"></textarea> + </td></tr></table> +</body> +</html> |