[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: package.searcher modification for lua modules
- From: Sean Conner <sean@...>
- Date: Tue, 22 Sep 2015 17:31:40 -0400
It was thus said that the Great Rena once stated:
> On Sep 22, 2015 11:43 AM, "Milind Gupta" <milind.gupta@gmail.com> wrote:
> >
> >
> >>
> >> > Why does everybody assume "org" is the "main" module when it's not?
> It's
> >> > not "org" with "conman.syslog" as a submodule, it's
> "org.conman.syslog".
> >> > The first two levels, "org.conman" just namespace my modules.
> >> >
> >> > Geeze, I might have to make "org.flummux.syslog" just to prove the
> point!
> >>
> >> > -spc (I must be the odd-man out ... )
> >>
> >> Well, I am with you: note that a certain Lua project has a bunch of
> >> modules with names such as "luarocks.fetch", "luarocks.fs.unix.tools",
> >> and so on, and there is no main module called "luarocks".
> >>
> >> -- Hisham (let's make some T-shirts "namespacing is not a crime")
> >> http://hisham.hm/
> >
> >
> > I don't think namespacing is a crime :) . But even if it is a namespace I
> > would have thought that I would want to place things with 1 namespace in a
> > particular location. Currently with org.conman.syslog and say org.conman.xx
> > and with a lua path C:\a\b\c\..\?\d\?.lua It would try to find xx and
> > syslog in 2 different directories. I would think it doesn't matter if you
> > have it as a namespace or a sub module the intention was that things inside
> > a particular redirection reside location. Maybe I am missing some other
> > cases that would fail.
> >
> It sounds like what you're saying is require("syslog") should succeed
> whether you have org.conman.syslog or foo.bar.syslog or even just syslog?
What he's saying is that given the following lua path:
C:/a/b/c/../?/d/?.lua
that
require "org.conman.syslog"
would look for
C:/a/b/c/../org/conman/syslog/d/org/conman/syslog.lua [1]
because most modules are just <name>, not <name>.<subname>.<subsubname>.
It also appears that he has several modules, foo, bar, baz, that all have
a similar directory structure:
foo/
foo/src
foo/src/foo.lua
bar/
bar/src
bar/src/bar.lua
baz/
baz/src
baz/src/baz.lua
And so an easy eay to reference each module is to change the lua path:
?/src/?.oua
instead of installing the modules into /usr/local/share/lua/5.x/ (or
whereever). My modules, org.conman.*, and Hisham's modules, luarocks.*,
break under that scheme. But that he (Milind) would like a searcher that
expands the paths like:
c:/a/b/c/../org/d/org/conman/syslog.lua
which *could* work for Hisham's modules, but definitely not for mine [2].
-spc (and just to mess with people, I wouldn't mind seeing Luarocks adapt
the org.luarocks namespace 8-)
[1] Even though org.conman.syslog is a C based module, so it would have
a .so extension.
[2] To test my modules, I have to install them first, as the layout I
have is:
orgconman/lua/table.lua -- this is org.conman.table
orgconman/lua/cc.lua -- this is org.coman.cc
orgconman/src/syslog.c -- this is org.conman.syslog
orgconman/src/signal.c -- this is org.conman.signal