diff options
author | Karl Berry <karl@freefriends.org> | 2022-08-08 20:59:11 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-08-08 20:59:11 +0000 |
commit | 008a3054b4dec80ee850f155441f93bf8e2b4347 (patch) | |
tree | da07083e9efdd2dc08ce2933c14dac9c5a4fba92 /Master/texmf-dist/tex | |
parent | d4a93fd36aa129e2cbf13bd938807a0a3ba47815 (diff) |
lt3luabridge (8aug22)
git-svn-id: svn://tug.org/texlive/trunk@64077 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex | 345 |
2 files changed, 86 insertions, 263 deletions
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty index c4f14db05e9..a1ad845c34a 100644 --- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty +++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty @@ -45,8 +45,8 @@ \RequirePackage{expl3} \ProvidesExplPackage {lt3luabridge}% - {2022-06-26}% - {1.0.1}% + {2022-08-08}% + {2.0.0}% {An expl3 package that allows you to execute Lua code in LuaTeX or any other TeX engine that exposes the shell} \input lt3luabridge\relax diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex index bdaf2c38a9d..ab20f4a3fe8 100644 --- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex +++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex @@ -47,69 +47,54 @@ \fi \ExplSyntaxOn \int_const:Nn - \c_luabridge_method_write_eighteen_int + \c_luabridge_method_directlua_int { 0 } \int_const:Nn - \c_luabridge_method_os_execute_int + \c_luabridge_method_shell_int { 1 } -\int_const:Nn - \c_luabridge_method_directlua_int - { 2 } \int_if_exist:NF \g_luabridge_method_int { \int_new:N \g_luabridge_method_int - \sys_if_engine_luatex:TF - { - \int_gset_eq:NN - \g_luabridge_method_int - \c_luabridge_method_directlua_int - } - { - \int_gset_eq:NN - \g_luabridge_method_int - \c_luabridge_method_write_eighteen_int - } + \sys_if_engine_luatex:TF + { + \int_gset_eq:NN + \g_luabridge_method_int + \c_luabridge_method_directlua_int + } + { + \int_gset_eq:NN + \g_luabridge_method_int + \c_luabridge_method_shell_int + } } \msg_new:nnn { luabridge } - { unknown-method } + { method-shell } { - Unknown~bridging~method:~#1 + Using~shell~escape~as~the~bridging~method } \msg_new:nnn { luabridge } - { method-write-eighteen } - { - Using~shell~escape~via~write18~as~the~bridging~method - } -\msg_new:nnn - { luabridge } - { method-os-execute } + { method-directlua } { - Using~shell~escape~via~os.execute()~as~the~bridging~method + Using~direct~Lua~access~as~the~bridging~method } \msg_new:nnn { luabridge } - { method-directlua } + { unknown-method } { - Using~direct~Lua~access~as~the~bridging~method + Unknown~bridging~method:~#1 } \int_case:nnF { \g_luabridge_method_int } { - { \c_luabridge_method_write_eighteen_int } - { - \msg_info:nn - { luabridge } - { method-write-eighteen } - } - { \c_luabridge_method_os_execute_int } + { \c_luabridge_method_shell_int } { \msg_info:nn { luabridge } - { method-os-execute } + { method-shell } } { \c_luabridge_method_directlua_int } { @@ -127,101 +112,11 @@ { unknown-method } \g_luabridge_method_int } -\bool_if:nTF - { - \int_compare_p:nNn - { \g_luabridge_method_int } - = - { \c_luabridge_method_write_eighteen_int } || - \int_compare_p:nNn - { \g_luabridge_method_int } - = - { \c_luabridge_method_os_execute_int } - } +\int_compare:nNnT + { \g_luabridge_method_int } + = + { \c_luabridge_method_shell_int } { - \int_const:Nn - \c__luabridge_level_disabled_int - { 0 } - \int_const:Nn - \c__luabridge_level_enabled_int - { 1 } - \int_const:Nn - \c__luabridge_level_restricted_int - { 2 } - \int_new:N - \l__luabridge_level_int - \cs_if_exist:NTF - \pdfshellescape - { - \int_gset:Nn - \l__luabridge_level_int - { \pdfshellescape } - } - { - \cs_if_exist:NTF - \shellescape - { - \int_gset:Nn - \l__luabridge_level_int - { \shellescape } - } - { - \int_case:nnF - { \g_luabridge_method_int } - { - { \c_luabridge_method_write_eighteen_int } - { - \int_gset_eq:NN - \l__luabridge_level_int - \c__luabridge_level_enabled_int - } - } - { - \int_gset:Nn - \l__luabridge_level_int - { - \lua_now:n - { - tex.sprint(status.shell_escape or "1") - } - } - } - } - } - \msg_new:nnn - { luabridge } - { unknown-level } - { - Unknown~shell~escape~level:~#1 - } - \msg_new:nnnn - { luabridge } - { level-disabled } - { - Shell~escape~seems~to~be~disabled - } - { - You~may~need~to~run~TeX~with~the~--shell-escape~or~the~ - --enable-write18~flag,~or~write~shell_escape=t~in~the~ - texmf.cnf~file. - } - \msg_new:nnn - { luabridge } - { level-enabled } - { - Shell~escape~seems~to~be~enabled - } - \msg_new:nnnn - { luabridge } - { level-restricted } - { - Shell~escape~seems~to~be~restricted - } - { - You~may~need~to~run~TeX~with~the~--shell-escape~or~the~ - --enable-write18~flag,~or~write~shell_escape=t~in~the~ - texmf.cnf~file. - } \str_const:Nn \c_luabridge_default_output_dirname_str { . } @@ -231,80 +126,6 @@ \str_const:Nx \c_luabridge_default_error_output_filename_str { \jobname.luabridge.err } - \str_const:Nx - \c_luabridge_default_standard_output_filename_str - { \jobname.luabridge.out } - \int_case:nnF - { \l__luabridge_level_int } - { - { \c__luabridge_level_disabled_int } - { - \msg_warning:nn - { luabridge } - { level-disabled } - } - { \c__luabridge_level_enabled_int } - { - \msg_info:nn - { luabridge } - { level-enabled } - } - { \c__luabridge_level_restricted_int } - { - \msg_warning:nn - { luabridge } - { level-restricted } - } - } - { - \msg_error:nnx - { luabridge } - { unknown-level } - { \l__luabridge_level_int } - } - \cs_new:Nn - \_luabridge_assert_shell_escape: - { - \int_case:nnF - { \l__luabridge_level_int } - { - { \c__luabridge_level_disabled_int } - { - \msg_error:nn - { luabridge } - { level-disabled } - } - } - } - \int_case:nn - { \g_luabridge_method_int } - { - { \c_luabridge_method_write_eighteen_int } - { - \cs_new:Nn - \_luabridge_execute_shell:n - { - \_luabridge_assert_shell_escape: - \immediate - \write 18 - { #1 } - } - } - { \c_luabridge_method_os_execute_int } - { - \cs_new:Nn - \_luabridge_execute_shell:n - { - \_luabridge_assert_shell_escape: - \lua_now:e - { - os.execute( - " \lua_escape:e { #1 } " - ) - } - } - } - } \str_if_exist:NF \g_luabridge_output_dirname_str { @@ -328,20 +149,11 @@ \g_luabridge_error_output_filename_str \c_luabridge_default_error_output_filename_str } - \str_if_exist:NF - \g_luabridge_standard_output_filename_str - { - \str_gset_eq:NN - \g_luabridge_standard_output_filename_str - \c_luabridge_default_standard_output_filename_str - } - \cs:w newwrite \cs_end: - \l__luabridge_output_stream \cs_new:Nn \luabridge_now:n { - \immediate \openout - \l__luabridge_output_stream + \iow_open:NV + \g_tmpa_iow \g_luabridge_helper_script_filename_str \msg_info:nnV { luabridge } @@ -353,19 +165,20 @@ \tl_set:Nx \l_tmpb_tl { - local~ran_ok,~error~=~pcall(function()~ - local~ran_ok,~kpse~=~pcall(require,~"kpse")~ - if~ran_ok~then~kpse.set_program_name("luatex")~end~ - \exp_not:V \l_tmpa_tl~ - end)~ + local~ran_ok, error = pcall(function() + local~ran_ok, kpse = pcall(require,~"kpse") + if~ran_ok~then~kpse.set_program_name("luatex") end~ + \exp_not:V \l_tmpa_tl + \iow_newline: + end) if~not~ran_ok~then~ - local~file~=~io.open(" + local~file = io.open(" \g_luabridge_output_dirname_str / \g_luabridge_error_output_filename_str - ",~"w")~ + ", "w") if~file~then~ - file:write(error~..~" \iow_char:N \\ n ")~ - file:close()~ + file:write(error .. " \iow_char:N \\ n ") + file:close() end~ print(' \iow_char:N \\ \iow_char:N \\ begingroup @@ -374,58 +187,53 @@ { luabridge } { failed-to-execute } { g_luabridge_output_dirname_str } - { g_luabridge_output_dirname_str } + { g_luabridge_error_output_filename_str } \iow_char:N \\ \iow_char:N \\ endgroup - ')~ + ') end } - \immediate \write - \l__luabridge_output_stream - { \exp_not:V \l_tmpb_tl } - \immediate \closeout - \l__luabridge_output_stream - \msg_info:nnVV + \iow_now:NV + \g_tmpa_iow + \l_tmpa_tl + \iow_close:N + \g_tmpa_iow + \msg_info:nnV { luabridge } { executing-helper-script } \g_luabridge_helper_script_filename_str - \g_luabridge_standard_output_filename_str - \tl_set:Nx - \l_tmpa_tl + \sys_get_shell:xnNTF { - texlua~" + texlua~ \g_luabridge_output_dirname_str / \g_luabridge_helper_script_filename_str - "~>~" - \g_luabridge_output_dirname_str / - \g_luabridge_standard_output_filename_str - " } - \_luabridge_execute_shell:V + { } \l_tmpa_tl - \file_if_exist_input:VF - \g_luabridge_standard_output_filename_str + { + \l_tmpa_tl + } { \msg_error:nn { luabridge } { level-disabled } } } + \prg_generate_conditional_variant:Nnn + \sys_get_shell:nnN + { xnN } + { TF } \cs_generate_variant:Nn \msg_info:nnn { nnV } \cs_generate_variant:Nn - \msg_info:nnnn - { nnVV } - \cs_generate_variant:Nn \msg_error:nnnn { nnvv } \cs_generate_variant:Nn - \_luabridge_execute_shell:n - { V } - \prg_generate_conditional_variant:Nnn - \file_if_exist_input:n - { V } - { F } + \iow_open:Nn + { NV } + \cs_generate_variant:Nn + \iow_now:Nn + { NV } \msg_new:nnn { luabridge } { writing-helper-script } @@ -436,8 +244,7 @@ { luabridge } { executing-helper-script } { - Executing~a~helper~Lua~script~from~file~#1~ - and~storing~the~result~in~file~#2 + Executing~a~helper~Lua~script~from~file~#1 } \msg_new:nnnn { luabridge } @@ -446,9 +253,24 @@ An~error~was~encountered~while~executing~Lua~code } { - For further clues, examine file #1/#2 + For further clues, examine file #1 / #2 + } + \msg_new:nnnn + { luabridge } + { level-disabled } + { + Shell~escape~seems~to~be~disabled + } + { + You~may~need~to~run~TeX~with~the~--shell-escape~or~the~ + --enable-write18~flag,~or~write~shell_escape=t~in~the~ + texmf.cnf~file. } } +\int_compare:nNnT + { \g_luabridge_method_int } + = + { \c_luabridge_method_directlua_int } { \cs_new:Nn \luabridge_now:n @@ -459,16 +281,17 @@ \tl_set:Nx \l_tmpb_tl { - local~function~print(input)~ - input~=~tostring(input)~ - local~output~=~{}~ + _ENV = setmetatable({}, {__index = _ENV}) + local~function~print(input) + input = tostring(input) + local~output = {} for~line~in~input:gmatch("[^ \iow_char:N \\ r \iow_char:N \\ n - ]+")~do~ - table.insert(output,~line)~ + ]+") do~ + table.insert(output, line) end~ - tex.print(output)~ + tex.print(output) end~ \exp_not:V \l_tmpa_tl } |