texlua な REPL ができるまで

「texlua のための REPL が欲しい」と呟いたところ,わずか1日で複数の手法・実装が提案された.すごい.
1
ワトソン @wtsnjp

irb とか pry みたいなやつって総称は REPL というらしい.そして texlua のこれがないから作ろうかな(作り始めた) / 各言語のWeb REPLサービスまとめ - プログラマのはしくれダイアリー yyyank.blogspot.com/2015/01/web-re…

2018-06-13 17:50:40
mod_poppo @mod_poppo

LuaでREPLを実装、やれば普通にできるのでは?と思ったけどUnix系OSではreadlineサポートが欲しくて、考えられる案は 1. readlineのLuaバインディングを使う(外部依存…) 2. LuaJITのFFIで頑張る 3. rlwrapを使ってもらう あたりか

2018-06-14 01:46:06
mod_poppo @mod_poppo

LuaでREPL実装、普通に既存品がありましたね… / hoelzro/lua-repl: A Lua REPL implemented in Lua for embedding in other programs github.com/hoelzro/lua-re…

2018-06-14 01:48:53
mod_poppo @mod_poppo

LuaTeXで処理させるとLuaのREPLが立ち上がるTeX文書、絶対に見たいでしょ

2018-06-14 01:53:37
mod_poppo @mod_poppo

Lua 5.2に非対応と言ってもunpackとloadstringを用意してやれば動くっぽくて、あとpackage.searchersをいじってlua-replのモジュールを読めるようにしてやれば、はい pic.twitter.com/zoMoGH94Yk

2018-06-14 02:18:21
拡大
mod_poppo @mod_poppo

\csstring\%を使えばカテゴリーコードを変更しなくても\directlua中に%を埋め込めるな pic.twitter.com/enZB8gkDq0

2018-06-14 02:23:29
拡大
びしょ〜じょ @Nymphium

LuaのREPLなら自作Lua処理系 written in altLuaにもあるでが… github.com/Nymphium/llix

2018-06-14 01:53:07
びしょ〜じょ @Nymphium

LuaではなくMoonScriptですが、 texファイルをコンパイルするとREPLが動いてほしいユーザーのために取り急ぎ作りました。 gist.github.com/Nymphium/240bf…

2018-06-14 02:20:44
びしょ〜じょ @Nymphium

ネタ感あるかもと思ったけど、arguments parserも使えるのでフラグオプションを渡すとinteractiveに値を変更できるようなtexファイルは使い出があるかもしれないな。

2018-06-14 02:30:37
ワトソン @wtsnjp

luarepl や torch/TREPL があるのは知っているけど,僕が欲しいのは純 texlua(依存ライブラリなし)の REPL

2018-06-14 11:30:01
mod_poppo @mod_poppo

「純texlua(依存ライブラリなし)」の意図するところがよくわからないが、ファイル単体で動かしたければpackage.preloadにモジュールの中身を関数リテラルとして突っ込んで固めればいいのでは。lua-replはバイナリモジュールがなくても一応動くようだし

2018-06-14 12:11:43
mod_poppo @mod_poppo

@wtsnjp LuaRocksは純粋に「スクリプトファイルを取ってくる」ためだけに使っており、gitで取って来ても同じことができるはずです。それから、repl.consoleはlua-repl自身のモジュールです。

2018-06-14 14:21:41
ワトソン @wtsnjp

@mod_poppo ああ,じゃあちょっと勘違いで,lua-repl は完全に self-contained なんですね.手元で試したら(多分実行 Lua 処理系のバージョンを見て)存在しない /usr/local/share/lua/5.2 を見に行ったので,この挙動だけなんとかしたいですね(とりあえず symlink を貼って誤魔化せば動きますが)

2018-06-14 14:41:42
mod_poppo @mod_poppo

@wtsnjp その辺の設定はlua-replにハードコードされているはずはないので、環境変数LUA_PATHかLuaの変数package.pathを変更すればいくらでもカスタマイズできると思います

2018-06-14 14:59:31
びしょ〜じょ @Nymphium

LuaTeXオンリーでOKなLua REPLってこういう…? load関数に完全にまかせたうえにグローバル関数オンリーイベントですが。 gist.github.com/Nymphium/b6dc9…

2018-06-14 14:47:21
某ZR(ざんねん🙃) @zr_tex8r

突然、LuaのREPLを実装する行為が流行りだした🙂 #Lua

2018-06-14 15:40:30
某ZR(ざんねん🙃) @zr_tex8r

まあ実際、LuaTeXを対話モードで起動している場合に、「TeXの対話モードからLuaの対話モードに切り替えたい」と思うことは割とよくある。 #TeX #LuaTeX

2018-06-14 19:55:57
ワトソン @wtsnjp

texlua REPL,手元ではほぼやりたかったことが出来るようになったので,あまり可搬性はないけどひとまず一件落着. thanks: @mod_poppo pic.twitter.com/6NDoUEihMa

2018-06-14 21:51:25
拡大
ワトソン @wtsnjp

聞いた話だけど LuaTeX の TeX モードと Lua モードでは結構出来ることに差があるらしくて,\directlua で REPL を呼び出したとして texlua の全機能が使えるのだろうか? #LuaTeX

2018-06-14 22:00:00
某ZR(ざんねん🙃) @zr_tex8r

@wtsnjp -shell-escapeでない場合の制限はありますね。 (任意のコマンドをos.executeできるわけではない、LuaJITが使えない、等) #TeX #LuaTeX

2018-06-14 22:13:15
某ZR(ざんねん🙃) @zr_tex8r

本質的☃なLua REPLの実行例です。 (結果表示が本質的であることを除いてなるべくLua5.2本家のREPLと同じ動作になるようにしている) #Lua #ナントカ pic.twitter.com/CMUD31yM3a

2018-06-14 22:27:12
拡大
某ZR(ざんねん🙃) @zr_tex8r

もしかして: Lua REPLは画期的でない方がよい #Lua pic.twitter.com/et60Ajl5Vn

2018-06-14 22:42:25
拡大
某ZR(ざんねん🙃) @zr_tex8r

諸般の事情により、画期的な機能が廃止になり フツーのLua REPLになりました。 あしからず。 #Lua #LuaTeX gist.github.com/zr-tex8r/00967…

2018-06-14 23:07:20
ワトソン @wtsnjp

昨日ちょっと「texlua 版の REPL が欲しい」って呟いたら,わずか1日で texlua で REPL する方法が TL で複数提案されているの端的にすごい. #LuaTeX #Lua

2018-06-15 00:34:32