Base64, PyScriptとWordPress
HTML上でPythonを実行するPyScriptについて先日WordPressでの動作を検証したところ、いくつか気づいた不具合の中にインデントが正しく評価されずエラーになる問題があった。
セキュリティのためWordPressがwptexturize関数か何かでPythonコードを書き換えている可能性があるので、コードをbase64に変換してしまうことで無理やり回避できないか試してみた。
インデントなし例
print("Hello, World")
先ずはインデントなしの例。上のコードをbase64変換しpy-scriptタグのsrcにペーストした。最初の2行はPyScriptのJavaScriptコード読み込みのため。
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css">
<script defer="" src="https://pyscript.net/alpha/pyscript.js"></script>
<py-script src="data:text/html;base64,cHJpbnQoIkhlbGxvLCB3b3JsZCEiKQ==">
</py-script>
実行結果
↑はい、Hellow World問題なし
インデントあり例
for i in range(5):
print(i)
続いて本命のインデントあり例。上のコードを用いる。うまくいけば0から4まで1行毎に表示されるはず。↓カスタムHTMLに貼り付けるコードはこちら。
<py-script src="data:text/html;base64,Zm9yIGkgaW4gcmFuZ2UoNSk6CiAgICBwcmludChpKSA=">
</py-script>
実行結果
今度はうまくいった。