Subversion Repositories wimsdev

Rev

Rev 14578 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

!if $wims_read_parm!=slib_header
  !goto proc
!endif
slib_title=Run code
slib_require=skulpt,codemirror
slib_author=Julien, Lyotard
slib_out=Run code written in the editor instance of codeeditor
slib_comment=
slib_parms=4\
,code: [language,[code]] or [[language,[code1]],[language,[code2]]\
1,identifiant\
,option: words as init canvas noexec instruction=[if 4<=i <=9 :,while n<=7 :, instruction 3]
,text

slib_example=[python,[n=0\nwhile n<10:\n print(n)\n n=n+1]],id1,readonly,Exécuter\
[python,[n=0\nwhile n<10:\n  print(n)\n  n=n+1\n  print(\"Hello\")]],id2,init,Exécuter,\
[[python,[a=23*797961\nprint(a)],code1],[python,[n=0\nwhile n<10:\n print (n)\n n=n+1],code2]]\
[python,[import turtle\nt = turtle.Turtle()\nt.forward(100)]],id3,canvas noexec
!exit
:proc

!reset slib_id
!distribute items $(wims_read_parm) into slib_code,slib_id,slib_option,slib_text
!default slib_text=Jouer le code
!default slib_id=0
slib_idc=$slib_id

!readproc slib/coding/editor $slib_code,$slib_idc,$slib_option

slib_pref=exec
slib_idp=$(slib_pref)$(slib_idc)
slib_idcanvas=mycanvas$(slib_idc)

slib_play=<span onclick="playcode$(slib_idp)();" class="wims_button" style="cursor:pointer;">$slib_text</span>
!if noexec iswordof $slib_option
  slib_pre=div
!else
  slib_pre=pre
!endif

slib_play=$slib_play\
  <$slib_pre id="output$(slib_idp)"></$slib_pre>
!if canvas iswordof $slib_option
  slib_play=$slib_play\
  <div id="$slib_idcanvas"></div>
!endif

slib_out_editor=$slib_out
slib_out=<script src="scripts/js/external/skulpt/skulpt.min.js" charset="utf-8"></script>\
  <script src="scripts/js/external/skulpt/skulpt-stdlib.js" charset="utf-8"></script>\
  $slib_out_editor\
  <div class="$(slib_pref)" id="$(slib_idp)">$slib_play</div>\
  <script>\
  function outf$(slib_idp)(text) {\
     var mypre = document.getElementById("output$(slib_idp)");\
     mypre.innerHTML = mypre.innerHTML + text;\
  }\
  function builtinRead(x) {\
    if (Sk.builtinFiles === undefined || Sk.builtinFiles["files"][x] === undefined)\
      throw "File not found: '" + x + "'";\
    return Sk.builtinFiles["files"][x];\
  }\
  function playcode$(slib_idp)(){\
    var prog=editor$(slib_idc).getValue();\
    var mypre = document.getElementById("output$(slib_idp)");\
    mypre.innerHTML = '';\
    Sk.$slib_pre = "output$(slib_idp)";\
    Sk.configure({output:outf$(slib_idp), read:builtinRead, __future__: Sk.python3});\
    (Sk.TurtleGraphics || (Sk.TurtleGraphics = {})).target = '$slib_idcanvas';\
    var myPromise = Sk.misceval.asyncToPromise(function() {\
      return Sk.importMainWithBody("<stdin>", false, prog, true);\
    });\
    myPromise.then(function(mod) {\
      console.log('success');\
    },\
    function(err) {\
      alert(err.toString());\
    });\
  }\
  </script>