Re: [NTG-context] problem with package.path

2010-05-08 Thread Taco Hoekwater

Hans Hagen wrote:

On 7-5-2010 10:52, Taco Hoekwater wrote:

Peter Münster wrote:

On Thu, May 06 2010, Hans Hagen wrote:


\startbuffer[test]
bla = nil
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
\stopluacode
\stoptext

dofile ../mytest.lua


Bad example...

mytest.lua is a module, so it must be loaded with require:


You cannot always replace 'require' with 'dofile', and for
this reason it is important that package.path actually works
as explained in the lua manual. (escrito had similar problems,
and other external lua modules will run into it as well).


well, package path is supported (as is cpath) so it's more a question of 
why that paths fails .. maybe we need to explicitly assume ; instead 
of the platform separator (tests on my machine work ok as windows has ; 
as separator)


you can test this with adding an explcit ; to

libpaths = file.split_path(_path_,;)

in data-lua.lua


For me on linux, this change should make it work (package.path indeed
contains semicolons). However, require() is still broken:

! LuaTeX error /opt/tex/texmf-local/tex/context/base/l-file.lua:133: bad 
argument #1 to 'gsub' (string expected, got nil)

stack traceback:
[C]: in function 'gsub'
/opt/tex/texmf-local/tex/context/base/l-file.lua:133: in 
function 'split_path'
/opt/tex/texmf-local/tex/context/base/data-lua.lua:36: in 
function 'clibpaths'
/opt/tex/texmf-local/tex/context/base/data-lua.lua:97: in 
function /opt/tex/texmf-local/tex/context/base/data-lua.lua:79

[C]: in function 'require'
main ctx instance:2: in main chunk.
}inserted text ...equire('testmodule') -- fails

\dodostartluacode ...d \directlua \zerocount {#1}}

l.5 \stopluacode


Test files are attached. The definition of package.libpaths I used:

  function package.libpaths()
print (_path_, package.path)
if not _path_ or package.path ~= _path_ then
_path_ = package.path
libpaths = file.split_path(_path_,';')
print (table.serialize(libpaths))
end
return libpaths
  end

And it prints out:

nil 
./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua

t={
 ./?.lua,
 /usr/local/share/lua/5.1/?.lua,
 /usr/local/share/lua/5.1/?/init.lua,
 /usr/local/lib/lua/5.1/?.lua,
 /usr/local/lib/lua/5.1/?/init.lua,
}

But it looks like mkiv is not happy with the split path, as it goes
on trying clibpaths().


Also, I ran into another problem: if the module has the same name as the
base input file, package.libpaths is not called at all (initially the
module was called 'tryme.lua').

Best wishes,
Taco


module 'testmodule'

return {}



tryme.tex
Description: TeX document
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] problem with package.path

2010-05-07 Thread Peter Münster
On Thu, May 06 2010, Hans Hagen wrote:

 \startbuffer[test]
 bla = nil
 \stopbuffer
 \savebuffer[test][../mytest.lua]
 \starttext
 \startluacode
 package.path = ../?.lua;;
 require(mytest)
 \stopluacode
 \stoptext

 dofile ../mytest.lua

Bad example...

mytest.lua is a module, so it must be loaded with require:

\startbuffer[test]
module(...)
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
-- dofile(../mytest.lua) -- this does not work
\stopluacode
\stoptext

Cheers, Peter

-- 
Contact information: http://pmrb.free.fr/contact/


___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] problem with package.path

2010-05-07 Thread Hans Hagen

On 7-5-2010 9:15, Peter Münster wrote:

On Thu, May 06 2010, Hans Hagen wrote:


\startbuffer[test]
bla = nil
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
\stopluacode
\stoptext


dofile ../mytest.lua


Bad example...

mytest.lua is a module, so it must be loaded with require:

\startbuffer[test]
module(...)
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
-- dofile(../mytest.lua) -- this does not work
\stopluacode
\stoptext


package.append_libpath(...)

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] problem with package.path

2010-05-07 Thread Taco Hoekwater

Peter Münster wrote:

On Thu, May 06 2010, Hans Hagen wrote:


\startbuffer[test]
bla = nil
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
\stopluacode
\stoptext

dofile ../mytest.lua


Bad example...

mytest.lua is a module, so it must be loaded with require:


You cannot always replace 'require' with 'dofile', and for
this reason it is important that package.path actually works
as explained in the lua manual. (escrito had similar problems,
and other external lua modules will run into it as well).

Best wishes,
Taco
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] problem with package.path

2010-05-07 Thread Hans Hagen

On 7-5-2010 10:52, Taco Hoekwater wrote:

Peter Münster wrote:

On Thu, May 06 2010, Hans Hagen wrote:


\startbuffer[test]
bla = nil
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
\stopluacode
\stoptext

dofile ../mytest.lua


Bad example...

mytest.lua is a module, so it must be loaded with require:


You cannot always replace 'require' with 'dofile', and for
this reason it is important that package.path actually works
as explained in the lua manual. (escrito had similar problems,
and other external lua modules will run into it as well).


well, package path is supported (as is cpath) so it's more a question of 
why that paths fails .. maybe we need to explicitly assume ; instead 
of the platform separator (tests on my machine work ok as windows has ; 
as separator)


you can test this with adding an explcit ; to

libpaths = file.split_path(_path_,;)

in data-lua.lua

Hans


-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] problem with package.path

2010-05-06 Thread Hans Hagen

On 4-5-2010 10:28, Peter Münster wrote:

Hello,

I need to include lua-modules from different directories, but package.path
does not seem to work:

\startbuffer[test]
bla = nil
\stopbuffer
\savebuffer[test][../mytest.lua]
\starttext
\startluacode
package.path = ../?.lua;;
require(mytest)
\stopluacode
\stoptext


dofile ../mytest.lua


-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] problem with package.path

2010-05-04 Thread Peter Münster
On Tue, May 04 2010, Peter Münster wrote:

 package.path = ../?.lua;;

Ok, I see, the paths must be separated by colons:

package.path = path1/?.lua:path2/?.lua

But it's not very comfortable, since some of my luafiles are processed by
lua¹ *and* by context².

¹ To generate code.
² To generate documentation.


But ok, shouldn't be a too big problem... ;)

Cheers, Peter

-- 
Contact information: http://pmrb.free.fr/contact/


___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___