From: jcr <ffi.appdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: pandoc-discuss <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
Subject: Re: requiring other lua files from parent directories from within filters
Date: Wed, 4 Oct 2023 06:54:07 -0700 (PDT) [thread overview]
Message-ID: <d94cef59-9869-4376-9d36-b38cab195025n@googlegroups.com> (raw)
In-Reply-To: <ZRxGUn7zsP-pRL0O@localhost>
[-- Attachment #1.1: Type: text/plain, Size: 3930 bytes --]
Another approach is to use Lua's debug facilities to find the path to the
script being executed, and add its directory to the Lua package path. This
is the function I use:
```
local function addMyDirToPath()
local myFile = debug.getinfo(2, "S").source:sub(2)
local myDir = myFile:match("(.*)/.*") or '.'
package.path = ("%s/?.lua;%s"):format(myDir, package.path)
end
```
To adapt this to your directory structure, just change the format string on
the third line of the function to ` "%s/../library/?.lua;%s"`.
On Tuesday, October 3, 2023 at 12:50:39 PM UTC-4 Bastien DUMONT wrote:
> The argument of require() is not a path, but a string that is passed to a
> template. The template is composed of semi-colon separated strings where ?
> is stands for the argument of require() (after all . have been replaced
> with /). For instance, if the template is:
>
> ./?.lua;/usr/local/share/lua/5.4/?.lua
>
> and you pass 'library.library' to it, Lua will search in
> ./library/library.lua and /usr/local/share/lua/5.4/library/library.lua
>
> The path is controlled by environment variables. In your case, if all
> loaded files are in the ../library directory, I would advise to call your
> script with:
>
> LUA_PATH='../library/?.lua' pandoc-lua script.lua
>
> and to write in inner/script.lua:
>
> library = require("library")
>
> Of course, you can also set the path to '../?.lua;./?.lua' if you want to
> be able to load files from the current directory and to write explicitely
> the path to library.lua as library.library!
>
> Le Tuesday 03 October 2023 à 09:17:04AM, ch_...-S0/GAf8tV78@public.gmane.org a écrit :
> > I have the following file structure:
> >
> > inner/script.lua
> > library/library.lua
> >
> > I try to load the library from within the script
> >
> > library = require("../library/library.lua")
> >
> > but get an error when running inside inner: pandoc lua script.lua
> >
> > Error running Lua:
> > script.lua:1: module '../library/library.lua' not found:
> > no field package.preload['../library/library.lua']
> > no file '/usr/local/share/lua/5.4////library/library/lua.lua'
> > no file '/usr/local/share/lua/5.4////library/library/lua/init.lua'
> > no file '/usr/local/lib/lua/5.4////library/library/lua.lua'
> > no file '/usr/local/lib/lua/5.4////library/library/lua/init.lua'
> > no file './///library/library/lua.lua'
> > no file './///library/library/lua/init.lua'
> > no file '/usr/local/lib/lua/5.4////library/library/lua.so'
> > no file '/usr/local/lib/lua/5.4/loadall.so'
> > no file './///library/library/lua.so'
> > no file '/usr/local/lib/lua/5.4/.so'
> > no file '/usr/local/lib/lua/5.4/loadall.so'
> > no file './.so'
> > stack traceback:
> > script.lua:1: in main chunk
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "pandoc-discuss" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email
> > to [1]pandoc-discus...-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> > To view this discussion on the web visit [2]
> https://groups.google.com/d/msgid/
> > pandoc-discuss/ee1ceb10-3318-48d0-ae1a-0ca538a3cdc9n%40googlegroups.com.
> >
> > References:
> >
> > [1] mailto:pandoc-discus...-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> > [2]
> https://groups.google.com/d/msgid/pandoc-discuss/ee1ceb10-3318-48d0-ae1a-0ca538a3cdc9n%40googlegroups.com?utm_medium=email&utm_source=footer
>
>
--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/d94cef59-9869-4376-9d36-b38cab195025n%40googlegroups.com.
[-- Attachment #1.2: Type: text/html, Size: 5946 bytes --]
next prev parent reply other threads:[~2023-10-04 13:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-03 16:17 ch_...-S0/GAf8tV78@public.gmane.org
[not found] ` <ee1ceb10-3318-48d0-ae1a-0ca538a3cdc9n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-10-03 16:50 ` Bastien DUMONT
2023-10-04 13:54 ` jcr [this message]
[not found] ` <d94cef59-9869-4376-9d36-b38cab195025n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-10-05 10:11 ` Albert Krewinkel
[not found] ` <875y3lnzho.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2023-10-05 14:49 ` jcr
2023-10-05 15:00 ` jcr
[not found] ` <82dabe2b-28c9-4ea3-a299-36a8c01b31b6n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-10-05 20:34 ` Albert Krewinkel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d94cef59-9869-4376-9d36-b38cab195025n@googlegroups.com \
--to=ffi.appdev-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).