Skulptの例では、python プログラムを含む文字列全体に対してインタープリターを実行しています。
https://github.com/skulpt/skulpt/blob/master/example/calling_from_js.html
たとえば、現在実行されている Python 行を強調表示するために、インタープリターを行ごとに実行する可能性はありますか?
前もって感謝します。
Skulptの例では、python プログラムを含む文字列全体に対してインタープリターを実行しています。
https://github.com/skulpt/skulpt/blob/master/example/calling_from_js.html
たとえば、現在実行されている Python 行を強調表示するために、インタープリターを行ごとに実行する可能性はありますか?
前もって感謝します。
var program = "print('something')\nprint('something else')";
var programs = program.split("\n");
for(var i = 0; i<programs.length; i++){
//skulpt on `programs[i]` and highlight that line
}
基本的に、次のようなことをしたいだけです:
2 番目のリンクからわずかに変更されたコード:
<script src="../dist/skulpt.min.js" type="text/javascript"></script>
<script type="text/javascript">
function outf(text)
{
var output = document.getElementById("output");
text = text.replace(/</g, '<');
output.innerHTML = output.innerHTML + text;
}
function runit(prog)
{
//changed this so the function accepts an argument
var output = document.getElementById("output");
output.innerHTML = '';
Sk.configure({output:outf});
try {
var module = Sk.importMainWithBody("<stdin>", false, prog);
var obj = module.tp$getattr('a');
var runMethod = obj.tp$getattr('run');
var ret = Sk.misceval.callsim(runMethod, 10);
alert(ret.v);
} catch (e) {
alert(e);
}
}
</script>
<form>
<textarea id="code" rows="24" cols="80">
class Test:
def run(self, b):
self.a = 10 + b
return self.a
print "Hello World"
a = Test()
</textarea><br>
<button onclick="runit()" type="button">Run</button>
</form>
<pre id="output"></pre>
次に、このコードを好きな場所に挿入するだけです
var programs = document.getElementById("code").value;
for(var i = 0; i<programs.length; i++){
// Whatever code you want to use to highlight the line goes here
runit(programs[i]);
}