78 lines
2.6 KiB
JavaScript
78 lines
2.6 KiB
JavaScript
/**
|
|
* @license
|
|
* Visual Blocks Language
|
|
*
|
|
* Copyright 2012 Google Inc.
|
|
* https://developers.google.com/blockly/
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview Generating Python for utility blocks.
|
|
* @author acbart@vt.edu (Austin Cory Bart)
|
|
*/
|
|
|
|
export const raw_block = function (block) {
|
|
var code = block.getFieldValue('TEXT') + "\n";
|
|
return code;
|
|
}
|
|
|
|
export const raw_expression = function (block, generator) {
|
|
var code = block.getFieldValue('TEXT');
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const raw_empty = function (block, generator) {
|
|
var code = generator.valueToCode(block, 'VALUE',
|
|
generator.ORDER_ATOMIC) || '';
|
|
return code + "\n";
|
|
}
|
|
|
|
export const raw_table = function () {
|
|
//var code = block.getFieldValue('TEXT')+"\n";
|
|
return '';//code;
|
|
}
|
|
|
|
export const type_check = function (block, generator) {
|
|
var value = generator.valueToCode(block, 'VALUE',
|
|
generator.ORDER_MEMBER) || '___';
|
|
var code = 'type(' + value + ')';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const function_call = function (block, generator) {
|
|
var name = block.getFieldValue('NAME');
|
|
var hasReturn = block.hasReturn_;
|
|
var args = new Array(block.itemCount_);
|
|
for (var n = 0; n < block.itemCount_; n++) {
|
|
args[n] = generator.valueToCode(block, 'ARGUMENT' + n,
|
|
generator.ORDER_NONE) || '___';
|
|
}
|
|
var code = name + '(' + args.join(', ') + ')';
|
|
if (hasReturn) {
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
return code + '\n';
|
|
}
|
|
|
|
export const attribute_access = function (block, generator) {
|
|
var value_module = generator.valueToCode(block, 'MODULE', generator.ORDER_ATOMIC);
|
|
var value_name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC);
|
|
//去除掉两端的括号,如(val()) --> val()
|
|
value_name = value_name.substring(1, value_name.length - 1);
|
|
// TODO: Assemble JavaScript into code variable.
|
|
var code = value_module + '.' + value_name;
|
|
// TODO: Change ORDER_NONE to the correct strength.
|
|
return [code, generator.ORDER_NONE];
|
|
} |