diff options
author | Karl Berry <karl@freefriends.org> | 2022-06-27 20:18:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-06-27 20:18:50 +0000 |
commit | 1890f892975db4b08c649e9c14d26f28b122ed57 (patch) | |
tree | 9cd44ca4f9ce74b92cc489dc1ffaca338c6bf927 /Master/texmf-dist/tex/generic/lt3luabridge | |
parent | 014fb31769a329e25418bcbe9c6415d2c92edb38 (diff) |
lt3luabridge (27jun22)
git-svn-id: svn://tug.org/texlive/trunk@63735 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/lt3luabridge')
3 files changed, 262 insertions, 80 deletions
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty index fc786140c6f..c4f14db05e9 100644 --- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty +++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty @@ -1,8 +1,55 @@ +%% +%% This is file `lt3luabridge.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lt3luabridge.dtx (with options: `latex-package') +%% +%% Copyright (C) 2016-2022 Vít Novotný +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% The Current Maintainer of this work is Vít Novotný. +%% +%% Send bug reports, requests for additions and questions +%% either to the GitHub issue tracker at +%% +%% https://github.com/Witiko/lt3luabridge/issues +%% +%% or to the e-mail address <witiko@mail.muni.cz>. +%% +%% MODIFICATION ADVICE: +%% +%% If you want to customize this file, it is best to make a copy of +%% the source file(s) from which it was produced. Use a different +%% name for your copy(ies) and modify the copy(ies); this will ensure +%% that your modifications do not get overwritten when you install a +%% new release of the standard system. You should also ensure that +%% your modified source file does not generate any modified file with +%% the same name as a standard file. +%% +%% You will also need to produce your own, suitably named, .ins file to +%% control the generation of files from your source file; this file +%% should contain your own preambles for the files it generates, not +%% those in the standard .ins files. +%% +%% The names of the source files used are shown above. +%% \RequirePackage{expl3} \ProvidesExplPackage {lt3luabridge}% - {2022-06-25}% - {1.0.0}% + {2022-06-26}% + {1.0.1}% {An expl3 package that allows you to execute Lua code in LuaTeX or any other TeX engine that exposes the shell} \input lt3luabridge\relax +\endinput +%% +%% End of file `lt3luabridge.sty'. diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex index 0c2b8f8ddd6..bdaf2c38a9d 100644 --- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex +++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex @@ -1,26 +1,75 @@ +%% +%% This is file `lt3luabridge.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lt3luabridge.dtx (with options: `generic-package') +%% +%% Copyright (C) 2016-2022 Vít Novotný +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% The Current Maintainer of this work is Vít Novotný. +%% +%% Send bug reports, requests for additions and questions +%% either to the GitHub issue tracker at +%% +%% https://github.com/Witiko/lt3luabridge/issues +%% +%% or to the e-mail address <witiko@mail.muni.cz>. +%% +%% MODIFICATION ADVICE: +%% +%% If you want to customize this file, it is best to make a copy of +%% the source file(s) from which it was produced. Use a different +%% name for your copy(ies) and modify the copy(ies); this will ensure +%% that your modifications do not get overwritten when you install a +%% new release of the standard system. You should also ensure that +%% your modified source file does not generate any modified file with +%% the same name as a standard file. +%% +%% You will also need to produce your own, suitably named, .ins file to +%% control the generation of files from your source file; this file +%% should contain your own preambles for the files it generates, not +%% those in the standard .ins files. +%% +%% The names of the source files used are shown above. +%% \ifx\ExplSyntaxOn\undefined \input expl3-generic\relax \fi \ExplSyntaxOn -\int_const:Nn \c__luabridge_method_write_eighteen_int { 0 } -\int_const:Nn \c__luabridge_method_os_execute_int { 1 } -\int_const:Nn \c__luabridge_method_directlua_int { 2 } +\int_const:Nn + \c_luabridge_method_write_eighteen_int + { 0 } +\int_const:Nn + \c_luabridge_method_os_execute_int + { 1 } +\int_const:Nn + \c_luabridge_method_directlua_int + { 2 } \int_if_exist:NF - \g__luabridge_method_int + \g_luabridge_method_int { \int_new:N - \g__luabridge_method_int - \cs_if_exist:NTF - \directlua + \g_luabridge_method_int + \sys_if_engine_luatex:TF { \int_gset_eq:NN - \g__luabridge_method_int - \c__luabridge_method_directlua_int + \g_luabridge_method_int + \c_luabridge_method_directlua_int } { \int_gset_eq:NN - \g__luabridge_method_int - \c__luabridge_method_write_eighteen_int + \g_luabridge_method_int + \c_luabridge_method_write_eighteen_int } } \msg_new:nnn @@ -48,21 +97,21 @@ Using~direct~Lua~access~as~the~bridging~method } \int_case:nnF - { \g__luabridge_method_int } + { \g_luabridge_method_int } { - { \c__luabridge_method_write_eighteen_int } + { \c_luabridge_method_write_eighteen_int } { \msg_info:nn { luabridge } { method-write-eighteen } } - { \c__luabridge_method_os_execute_int } + { \c_luabridge_method_os_execute_int } { \msg_info:nn { luabridge } { method-os-execute } } - { \c__luabridge_method_directlua_int } + { \c_luabridge_method_directlua_int } { \msg_info:nn { luabridge } @@ -70,33 +119,42 @@ } } { - \msg_error:nnx + \cs_generate_variant:Nn + \msg_error:nnn + { nnV } + \msg_error:nnV { luabridge } { unknown-method } - { \g__luabridge_method_int } + \g_luabridge_method_int } \bool_if:nTF { \int_compare_p:nNn - { \g__luabridge_method_int } + { \g_luabridge_method_int } = - { \c__luabridge_method_write_eighteen_int } || + { \c_luabridge_method_write_eighteen_int } || \int_compare_p:nNn - { \g__luabridge_method_int } + { \g_luabridge_method_int } = - { \c__luabridge_method_os_execute_int } + { \c_luabridge_method_os_execute_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_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 - \g__luabridge_level_int + \l__luabridge_level_int \cs_if_exist:NTF \pdfshellescape { \int_gset:Nn - \g__luabridge_level_int + \l__luabridge_level_int { \pdfshellescape } } { @@ -104,25 +162,25 @@ \shellescape { \int_gset:Nn - \g__luabridge_level_int + \l__luabridge_level_int { \shellescape } } { \int_case:nnF - { \g__luabridge_method_int } + { \g_luabridge_method_int } { - { \c__luabridge_method_write_eighteen_int } + { \c_luabridge_method_write_eighteen_int } { \int_gset_eq:NN - \g__luabridge_level_int + \l__luabridge_level_int \c__luabridge_level_enabled_int } } { \int_gset:Nn - \g__luabridge_level_int + \l__luabridge_level_int { - \directlua + \lua_now:n { tex.sprint(status.shell_escape or "1") } @@ -164,12 +222,20 @@ --enable-write18~flag,~or~write~shell_escape=t~in~the~ texmf.cnf~file. } - \str_const:Nn \c__luabridge_default_output_dirname_str { . } - \str_const:Nx \c__luabridge_default_helper_script_filename_str { \jobname.luabridge.lua } - \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 } + \str_const:Nn + \c_luabridge_default_output_dirname_str + { . } + \str_const:Nx + \c_luabridge_default_helper_script_filename_str + { \jobname.luabridge.lua } + \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 - { \g__luabridge_level_int } + { \l__luabridge_level_int } { { \c__luabridge_level_disabled_int } { @@ -194,13 +260,13 @@ \msg_error:nnx { luabridge } { unknown-level } - { \g__luabridge_level_int } + { \l__luabridge_level_int } } \cs_new:Nn \_luabridge_assert_shell_escape: { \int_case:nnF - { \g__luabridge_level_int } + { \l__luabridge_level_int } { { \c__luabridge_level_disabled_int } { @@ -211,9 +277,9 @@ } } \int_case:nn - { \g__luabridge_method_int } + { \g_luabridge_method_int } { - { \c__luabridge_method_write_eighteen_int } + { \c_luabridge_method_write_eighteen_int } { \cs_new:Nn \_luabridge_execute_shell:n @@ -224,75 +290,78 @@ { #1 } } } - { \c__luabridge_method_os_execute_int } + { \c_luabridge_method_os_execute_int } { \cs_new:Nn \_luabridge_execute_shell:n { \_luabridge_assert_shell_escape: - \directlua + \lua_now:e { os.execute( - " \luaescapestring { #1 } " + " \lua_escape:e { #1 } " ) } } } } \str_if_exist:NF - \g__luabridge_output_dirname_str + \g_luabridge_output_dirname_str { \str_new:N - \g__luabridge_output_dirname_str + \g_luabridge_output_dirname_str \tl_gset:Nn - \g__luabridge_output_dirname_str - \c__luabridge_default_output_dirname_str + \g_luabridge_output_dirname_str + \c_luabridge_default_output_dirname_str } \str_if_exist:NF - \g__luabridge_helper_script_filename_str + \g_luabridge_helper_script_filename_str { \str_gset_eq:NN - \g__luabridge_helper_script_filename_str - \c__luabridge_default_helper_script_filename_str + \g_luabridge_helper_script_filename_str + \c_luabridge_default_helper_script_filename_str } \str_if_exist:NF - \g__luabridge_error_output_filename_str + \g_luabridge_error_output_filename_str { \str_gset_eq:NN - \g__luabridge_error_output_filename_str - \c__luabridge_default_error_output_filename_str + \g_luabridge_error_output_filename_str + \c_luabridge_default_error_output_filename_str } \str_if_exist:NF - \g__luabridge_standard_output_filename_str + \g_luabridge_standard_output_filename_str { \str_gset_eq:NN - \g__luabridge_standard_output_filename_str - \c__luabridge_default_standard_output_filename_str + \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_execute:n + \luabridge_now:n { \immediate \openout \l__luabridge_output_stream - \g__luabridge_helper_script_filename_str + \g_luabridge_helper_script_filename_str \msg_info:nnV { luabridge } { writing-helper-script } - \g__luabridge_helper_script_filename_str - \tl_set:Nx + \g_luabridge_helper_script_filename_str + \tl_set:Nn \l_tmpa_tl + { #1 } + \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~ - #1~ + \exp_not:V \l_tmpa_tl~ end)~ if~not~ran_ok~then~ local~file~=~io.open(" - \g__luabridge_output_dirname_str / - \g__luabridge_error_output_filename_str + \g_luabridge_output_dirname_str / + \g_luabridge_error_output_filename_str ",~"w")~ if~file~then~ file:write(error~..~" \iow_char:N \\ n ")~ @@ -304,37 +373,37 @@ \iow_char:N \\ \iow_char:N \\ msg_error:nnvv { luabridge } { failed-to-execute } - { g__luabridge_output_dirname_str } - { g__luabridge_output_dirname_str } + { g_luabridge_output_dirname_str } + { g_luabridge_output_dirname_str } \iow_char:N \\ \iow_char:N \\ endgroup ')~ end } \immediate \write \l__luabridge_output_stream - { \exp_not:V \l_tmpa_tl } + { \exp_not:V \l_tmpb_tl } \immediate \closeout \l__luabridge_output_stream \msg_info:nnVV { luabridge } { executing-helper-script } - \g__luabridge_helper_script_filename_str - \g__luabridge_standard_output_filename_str + \g_luabridge_helper_script_filename_str + \g_luabridge_standard_output_filename_str \tl_set:Nx \l_tmpa_tl { texlua~" - \g__luabridge_output_dirname_str / - \g__luabridge_helper_script_filename_str + \g_luabridge_output_dirname_str / + \g_luabridge_helper_script_filename_str "~>~" - \g__luabridge_output_dirname_str / - \g__luabridge_standard_output_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 + \g_luabridge_standard_output_filename_str { \msg_error:nn { luabridge } @@ -382,9 +451,13 @@ } { \cs_new:Nn - \_luabridge_execute:n + \luabridge_now:n { - \directlua + \tl_set:Nn + \l_tmpa_tl + { #1 } + \tl_set:Nx + \l_tmpb_tl { local~function~print(input)~ input~=~tostring(input)~ @@ -397,11 +470,26 @@ end~ tex.print(output)~ end~ - #1 + \exp_not:V \l_tmpa_tl } + \lua_now:V + \l_tmpb_tl } + \cs_generate_variant:Nn + \lua_now:n + { V } } \cs_new_protected:Npn \luabridgeExecute - { \_luabridge_execute:n } + #1 + { + \luabridge_now:e + { #1 } + } +\cs_generate_variant:Nn + \luabridge_now:n + { e } \ExplSyntaxOff +\endinput +%% +%% End of file `lt3luabridge.tex'. diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex b/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex index 12f8b18aff9..f142d0965f5 100644 --- a/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex +++ b/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex @@ -1,4 +1,51 @@ +%% +%% This is file `t-lt3luabridge.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lt3luabridge.dtx (with options: `context-package') +%% +%% Copyright (C) 2016-2022 Vít Novotný +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% The Current Maintainer of this work is Vít Novotný. +%% +%% Send bug reports, requests for additions and questions +%% either to the GitHub issue tracker at +%% +%% https://github.com/Witiko/lt3luabridge/issues +%% +%% or to the e-mail address <witiko@mail.muni.cz>. +%% +%% MODIFICATION ADVICE: +%% +%% If you want to customize this file, it is best to make a copy of +%% the source file(s) from which it was produced. Use a different +%% name for your copy(ies) and modify the copy(ies); this will ensure +%% that your modifications do not get overwritten when you install a +%% new release of the standard system. You should also ensure that +%% your modified source file does not generate any modified file with +%% the same name as a standard file. +%% +%% You will also need to produce your own, suitably named, .ins file to +%% control the generation of files from your source file; this file +%% should contain your own preambles for the files it generates, not +%% those in the standard .ins files. +%% +%% The names of the source files used are shown above. +%% \writestatus{loading}{ConTeXt User Module / lt3luabridge} \startmodule[lt3luabridge] \unprotect \input lt3luabridge\relax +\endinput +%% +%% End of file `t-lt3luabridge.tex'. |