46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
import { Python } from '@mixly/python';
|
|
import KEYBOARD_INTERRUPT_TEMPLATE from './templates/python/keyboard-interrupt.py';
|
|
|
|
Python.finish = function (code) {
|
|
// Convert the definitions dictionary into a list.
|
|
if (code !== "") {
|
|
code = code.replace(/\n/g, '\n');
|
|
code = code.replace(/\n\s+$/, '\n');
|
|
}
|
|
var definitions = [];
|
|
for (var name in Python.definitions_) {
|
|
definitions.push(Python.definitions_[name]);
|
|
}
|
|
var functions = [];
|
|
for (let name in Python.functions_) {
|
|
functions.push(Python.functions_[name]);
|
|
}
|
|
var setups = [];
|
|
for (let name in Python.setups_) {
|
|
setups.push(Python.setups_[name]);
|
|
}
|
|
if (setups.length !== 0)
|
|
setups.push('\n');
|
|
var loops = [];
|
|
for (let name in Python.loops_) {
|
|
loops.push(Python.loops_[name]);
|
|
}
|
|
var codeEnd = [];
|
|
for (let name in Python.codeEnd_) {
|
|
codeEnd.push(Python.codeEnd_[name]);
|
|
}
|
|
if (codeEnd.length !== 0)
|
|
codeEnd.push('\n');
|
|
// Clean up temporary data.
|
|
//delete Python.definitions_;
|
|
//delete Python.functionNames_;
|
|
//Python.variableDB_.reset();
|
|
if (loops.length > 0)
|
|
return KEYBOARD_INTERRUPT_TEMPLATE + definitions.join('\n') + '\n' + functions.join('\n')
|
|
+ '\n' + setups.join('') + '\n' + code
|
|
+ 'while True:\n' + loops.join('') + codeEnd.join('\n');
|
|
return KEYBOARD_INTERRUPT_TEMPLATE + definitions.join('\n') + '\n' + functions.join('\n') + '\n'
|
|
+ setups.join('') + '\n' + code + codeEnd.join('\n');
|
|
}
|
|
|
|
export default Python; |