99 lines
2.7 KiB
JavaScript
99 lines
2.7 KiB
JavaScript
'use strict';
|
|
|
|
pbc.globalFunctionD['type'] = function (py2block, func, args, keywords, starargs, kwargs, node) {
|
|
if (args.length != 1) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
return block("controls_type", func.lineno, {}, {
|
|
'DATA': py2block.convert(args[0]),
|
|
}, {
|
|
"inline": "false"
|
|
});
|
|
}
|
|
|
|
|
|
function typeName() {
|
|
function converter(py2block, node, id, ctx, nodeName) {
|
|
return block("controls_typeLists", node.lineno, {'type': nodeName}, {}, {
|
|
"inline": "true"
|
|
});
|
|
}
|
|
|
|
return converter;
|
|
}
|
|
|
|
pbc.reservedNameD['int'] = typeName();
|
|
pbc.reservedNameD['float'] = typeName();
|
|
pbc.reservedNameD['str'] = typeName();
|
|
pbc.reservedNameD['list'] = typeName();
|
|
pbc.reservedNameD['tuple'] = typeName();
|
|
pbc.reservedNameD['dict'] = typeName();
|
|
pbc.reservedNameD['set'] = typeName();
|
|
pbc.reservedNameD['NoneType'] = typeName();
|
|
|
|
pbc.globalFunctionD['range'] = function (py2block, func, args, keywords, starargs, kwargs, node) {
|
|
var args_len = args.length;
|
|
if (args_len > 3 || args_len < 1) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
var arg1block, arg2block, arg3block;
|
|
if (args_len == 1) {
|
|
arg2block = py2block.convert(args[0]);
|
|
var args0 = {
|
|
_astname: "Num",
|
|
n: {
|
|
'v': 0
|
|
}
|
|
|
|
};
|
|
arg1block = py2block.convert(args0);
|
|
var args2 = {
|
|
_astname: "Num",
|
|
n: {
|
|
'v': 1
|
|
}
|
|
};
|
|
arg3block = py2block.convert(args2);
|
|
}else if (args_len == 2) {
|
|
var args2 = {
|
|
_astname: "Num",
|
|
n: {
|
|
'v': 1
|
|
}
|
|
};
|
|
arg1block = py2block.convert(args[0]);
|
|
arg2block = py2block.convert(args[1]);
|
|
arg3block = py2block.convert(args2);
|
|
}else {
|
|
arg1block = py2block.convert(args[0]);
|
|
arg2block = py2block.convert(args[1]);
|
|
arg3block = py2block.convert(args[2]);
|
|
}
|
|
|
|
return block("controls_range", func.lineno, {
|
|
}, {
|
|
'FROM': arg1block,
|
|
'TO': arg2block,
|
|
'STEP': arg3block
|
|
}, {
|
|
"inline": "true"
|
|
});
|
|
};
|
|
|
|
pbc.moduleFunctionD.get('_thread')['start_new_thread'] = function(py2block, func, args, keywords, starargs, kwargs, node){
|
|
if (args.length !== 2) {
|
|
throw new Error("Incorrect number of arguments");
|
|
}
|
|
pbc.pinType = "pins_callback";
|
|
var callback = py2block.convert(args[0]);
|
|
pbc.pinType=null;
|
|
var tupblock = py2block.convert(args[1]);
|
|
return [block("controls_thread", func.lineno, {},{
|
|
"callback":callback,
|
|
"VAR":tupblock
|
|
},{
|
|
"inline": "true"
|
|
})];
|
|
};
|
|
//for i in ...在python_to_blockly.js中实现
|