Skip to content

Commit 73f4d92

Browse files
Make it possible to compile a code with def test(): global data
1 parent ed0f5ce commit 73f4d92

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

franceioi/test.html

+7-4
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,20 @@
33
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script>
44
<!--<script src="../../bebras-tasks/_common/modules/ext/skulpt/skulpt.quickAlgo.min.js" type="text/javascript"></script>-->
55
<script src="../dist/skulpt.min.js" type="text/javascript"></script>
6-
<script src="./skulpt-stdlib.js" type="text/javascript"></script>
6+
<script src="../dist/skulpt-stdlib.js" type="text/javascript"></script>
77
<!--<script src="../../bebras-tasks/_common/modules/ext/skulpt/debugger.js" type="text/javascript"></script>-->
8-
<!--<script src="../dist/debugger.js" type="text/javascript"></script>-->
9-
<script src="../debugger/debugger.js" type="text/javascript"></script>
8+
<script src="../dist/debugger.js" type="text/javascript"></script>
9+
<!-- <script src="../debugger/debugger.js" type="text/javascript"></script>-->
1010
</head>
1111

1212
<body>
1313

1414
<script type="text/javascript">
1515
window.currentPythonRunner = {
16-
reportValue: (val) => val
16+
reportValue: (name, value) => {
17+
console.log('reported value', {name, value});
18+
},
19+
_debugger: new Sk.Debugger('test.py', this),
1720
};
1821

1922
// output functions are configurable. This one just appends some text

src/compile.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -690,20 +690,22 @@ Compiler.prototype.hookAffectation = function (mangled, dataToStore, debug) {
690690
// out(mangled, "=", dataToStore, ";");
691691

692692
// If doesn't start with $loc.
693-
if (mangled.substr(0, 5) !== "$loc.") {
693+
if (mangled.substr(0, 5) !== "$loc." && mangled.substr(0, 5) !== "$gbl.") {
694694
out(mangled, "=", dataToStore, ";");
695695

696696
return;
697697
}
698698

699-
// TO : $loc.varName = window.currentPythonRunner.reportValue(value, 'varName');
699+
var prefix = mangled.substr(0, 4);
700+
701+
// TO : [prefix].varName = window.currentPythonRunner.reportValue(value, 'varName');
700702
var varName = mangled.substr(5);
701703
out("if (" + dataToStore + ".hasOwnProperty('_uuid')) {");
702-
out(" $loc.__refs__ = ($loc.hasOwnProperty('__refs__')) ? $loc.__refs__ : [];");
703-
out(" if (!$loc.__refs__.hasOwnProperty(" + dataToStore + "._uuid)) {");
704-
out(" $loc.__refs__[" + dataToStore + "._uuid] = [];");
704+
out(" " + prefix + ".__refs__ = (" + prefix + ".hasOwnProperty('__refs__')) ? " + prefix + ".__refs__ : [];");
705+
out(" if (!" + prefix + ".__refs__.hasOwnProperty(" + dataToStore + "._uuid)) {");
706+
out(" " + prefix + ".__refs__[" + dataToStore + "._uuid] = [];");
705707
out(" }");
706-
out(" $loc.__refs__[" + dataToStore + "._uuid].push(\"" + varName + "\");");
708+
out(" " + prefix + ".__refs__[" + dataToStore + "._uuid].push(\"" + varName + "\");");
707709
out("}");
708710

709711
out(mangled, "=", "window.currentPythonRunner.reportValue(", dataToStore, ", '", varName, "');");

0 commit comments

Comments
 (0)