Path relativo e absoluto no lua 5.1.5

classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Pessoal, estou encontrando dificuldades em saber como faço para que em um script lua eu possa chamar as funções doFile e require.

Tenho que extender o lua? mostrando qual o path que o lua está localizado?

Como posso fazer?

--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Elias Barrionovo
Não entendi.

dofile aceita um path completo, então você pode simplesmente
dofile('/home/username/scripts/lol.lua').

Quanto ao require, ele procura o script nos paths em package.path ou
package.cpath se for um módulo c. Você pode simplesmente apendar o
path lá:

package.path = package.path .. ';/meu/path/louco/?.lua'

Veja mais em:
http://www.lua.org/manual/5.1/manual.html#pdf-package.path

(aliás, até hoje não entendi porque esses valores não são tabelas)

2013/10/30 Anderson Pimentel <[hidden email]>:

> Pessoal, estou encontrando dificuldades em saber como faço para que em um
> script lua eu possa chamar as funções doFile e require.
>
> Tenho que extender o lua? mostrando qual o path que o lua está localizado?
>
> Como posso fazer?
>
> --
> Att, Anderson Pimentel
>
> --
> Lua BR - http://groups.google.com/group/lua-br
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos
> Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Elias, mas no caso do doFile, eu posso ter o seguinte caso:

main.lua
/scripts/file1.lua
/scripts/file2.lua
/scripts/others/file3.lua

No main.lua tenho uma chamada doFile("scripts/file1.lua")

e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")

Obtenho um erro dizendo que o lua não consegue encontrar o caminho do file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz, não a partir do file1.lua.

Esse é o erro. O que tenho q fazer?

//Com relação ao require vou fazer o que me sugeriu.


Em 30 de outubro de 2013 16:54, Elias Barrionovo <[hidden email]> escreveu:
Não entendi.

dofile aceita um path completo, então você pode simplesmente
dofile('/home/username/scripts/lol.lua').

Quanto ao require, ele procura o script nos paths em package.path ou
package.cpath se for um módulo c. Você pode simplesmente apendar o
path lá:

package.path = package.path .. ';/meu/path/louco/?.lua'

Veja mais em:
http://www.lua.org/manual/5.1/manual.html#pdf-package.path

(aliás, até hoje não entendi porque esses valores não são tabelas)

2013/10/30 Anderson Pimentel <[hidden email]>:
> Pessoal, estou encontrando dificuldades em saber como faço para que em um
> script lua eu possa chamar as funções doFile e require.
>
> Tenho que extender o lua? mostrando qual o path que o lua está localizado?
>
> Como posso fazer?
>
> --
> Att, Anderson Pimentel
>
> --
> Lua BR - http://groups.google.com/group/lua-br
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos
> Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Elias Barrionovo
2013/10/30 Anderson Pimentel <[hidden email]>:

> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Sim, mas como eu faria para usar o dofile como require?

você falou para appendar o package.path, como sou iniciante ainda não entendi como fazer isso. :/


Em 30 de outubro de 2013 17:38, Elias Barrionovo <[hidden email]> escreveu:
2013/10/30 Anderson Pimentel <[hidden email]>:
> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Eric Chiesse
Será que teu problema é o path que vc está passando?

Se o diretório scripts está no mesmo lugar que o main.lua então vc deve fazer:
dofile("scripts/file1.lua") e não dofile("/scripts/file1.lua")

---
Eric


Em 30 de outubro de 2013 21:17, Anderson Pimentel <[hidden email]> escreveu:
Sim, mas como eu faria para usar o dofile como require?

você falou para appendar o package.path, como sou iniciante ainda não entendi como fazer isso. :/


Em 30 de outubro de 2013 17:38, Elias Barrionovo <[hidden email]> escreveu:

2013/10/30 Anderson Pimentel <[hidden email]>:
> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Eric Chiesse
Ah esquece, agora vi que vc já fez assim.

É o sono :)

---
Eric


Em 30 de outubro de 2013 21:42, Eric Chiesse <[hidden email]> escreveu:
Será que teu problema é o path que vc está passando?

Se o diretório scripts está no mesmo lugar que o main.lua então vc deve fazer:
dofile("scripts/file1.lua") e não dofile("/scripts/file1.lua")

---
Eric


Em 30 de outubro de 2013 21:17, Anderson Pimentel <[hidden email]> escreveu:

Sim, mas como eu faria para usar o dofile como require?

você falou para appendar o package.path, como sou iniciante ainda não entendi como fazer isso. :/


Em 30 de outubro de 2013 17:38, Elias Barrionovo <[hidden email]> escreveu:

2013/10/30 Anderson Pimentel <[hidden email]>:
> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Ok, =)

então, será que tenho que alterar o lua internamente ou criar algum modulo externo para reconhecer esse meu path da plataforma?


Em 30 de outubro de 2013 20:45, Eric Chiesse <[hidden email]> escreveu:
Ah esquece, agora vi que vc já fez assim.

É o sono :)

---
Eric


Em 30 de outubro de 2013 21:42, Eric Chiesse <[hidden email]> escreveu:

Será que teu problema é o path que vc está passando?

Se o diretório scripts está no mesmo lugar que o main.lua então vc deve fazer:
dofile("scripts/file1.lua") e não dofile("/scripts/file1.lua")

---
Eric


Em 30 de outubro de 2013 21:17, Anderson Pimentel <[hidden email]> escreveu:

Sim, mas como eu faria para usar o dofile como require?

você falou para appendar o package.path, como sou iniciante ainda não entendi como fazer isso. :/


Em 30 de outubro de 2013 17:38, Elias Barrionovo <[hidden email]> escreveu:

2013/10/30 Anderson Pimentel <[hidden email]>:
> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Eric Chiesse
A melhor saída pra vc é usar require.

Certifique-se de que seus .lua estão no package.path e seja feliz.

Se quiser/precisar usar dofile ou vc faz em relação ao diretório onde vc iniciou o interpretador (nem sempre é onde está o main) ou usa caminhos absolutos (acho que acaba sendo mais organizado).

Mas vai de require. Se vc configurar direitinho vai fazer o que vc quer. Vc vai querer entender também isso: http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders

Dá uma estudada também no LUA_PATH. Pode ser do seu interesse.

---
Eric


Em 30 de outubro de 2013 22:01, Anderson Pimentel <[hidden email]> escreveu:
Ok, =)

então, será que tenho que alterar o lua internamente ou criar algum modulo externo para reconhecer esse meu path da plataforma?


Em 30 de outubro de 2013 20:45, Eric Chiesse <[hidden email]> escreveu:

Ah esquece, agora vi que vc já fez assim.

É o sono :)

---
Eric


Em 30 de outubro de 2013 21:42, Eric Chiesse <[hidden email]> escreveu:

Será que teu problema é o path que vc está passando?

Se o diretório scripts está no mesmo lugar que o main.lua então vc deve fazer:
dofile("scripts/file1.lua") e não dofile("/scripts/file1.lua")

---
Eric


Em 30 de outubro de 2013 21:17, Anderson Pimentel <[hidden email]> escreveu:

Sim, mas como eu faria para usar o dofile como require?

você falou para appendar o package.path, como sou iniciante ainda não entendi como fazer isso. :/


Em 30 de outubro de 2013 17:38, Elias Barrionovo <[hidden email]> escreveu:

2013/10/30 Anderson Pimentel <[hidden email]>:
> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Pessoal, o lua é uma linguagem supostamente fácil de ser embarcada. Então, toda vez que eu embarcar o lua em uma plataforma, preciso passar para o lua a forma que ele vai encontrar os arquivos chamados dentro do script(path),  Certo?

Na plataforma que estou trabalhando, não consigo compilar meu projeto em lua, enquanto não comentar o módulo "package" no arquivo libinit.c(da um erro no setprogdir no loadlib.c). Mas se fizer isso, também não consigo fazer nenhum dofile, require ou module dentro dos meus scripts.

Não tem alguma forma que terei de modificar o lua, para que ele entenda onde procurar os arquivos da plataforma, seja por dofile, require ou module?

Desculpe, é que tenho procurado sobre o assunto, e ainda não entendi como resolver esse meu problema. Lembrando que não tenho a opção de escrever os scripts, apenas tenho que deixar disponível essas opções de chamada de arquivos lua para quem vai escrever.


Em 30 de outubro de 2013 21:11, Eric Chiesse <[hidden email]> escreveu:
A melhor saída pra vc é usar require.

Certifique-se de que seus .lua estão no package.path e seja feliz.

Se quiser/precisar usar dofile ou vc faz em relação ao diretório onde vc iniciou o interpretador (nem sempre é onde está o main) ou usa caminhos absolutos (acho que acaba sendo mais organizado).

Mas vai de require. Se vc configurar direitinho vai fazer o que vc quer. Vc vai querer entender também isso: http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders

Dá uma estudada também no LUA_PATH. Pode ser do seu interesse.

---
Eric


Em 30 de outubro de 2013 22:01, Anderson Pimentel <[hidden email]> escreveu:

Ok, =)

então, será que tenho que alterar o lua internamente ou criar algum modulo externo para reconhecer esse meu path da plataforma?


Em 30 de outubro de 2013 20:45, Eric Chiesse <[hidden email]> escreveu:

Ah esquece, agora vi que vc já fez assim.

É o sono :)

---
Eric


Em 30 de outubro de 2013 21:42, Eric Chiesse <[hidden email]> escreveu:

Será que teu problema é o path que vc está passando?

Se o diretório scripts está no mesmo lugar que o main.lua então vc deve fazer:
dofile("scripts/file1.lua") e não dofile("/scripts/file1.lua")

---
Eric


Em 30 de outubro de 2013 21:17, Anderson Pimentel <[hidden email]> escreveu:

Sim, mas como eu faria para usar o dofile como require?

você falou para appendar o package.path, como sou iniciante ainda não entendi como fazer isso. :/


Em 30 de outubro de 2013 17:38, Elias Barrionovo <[hidden email]> escreveu:

2013/10/30 Anderson Pimentel <[hidden email]>:
> main.lua
> /scripts/file1.lua
> /scripts/file2.lua
> /scripts/others/file3.lua
>
> No main.lua tenho uma chamada doFile("scripts/file1.lua")
>
> e dentro do file1.lua tenho uma chamada doFile("others/file3.lua")
>
> Obtenho um erro dizendo que o lua não consegue encontrar o caminho do
> file3.lua, pois no segundo caso ele tenta achar o arquivo a partir do raiz,
> não a partir do file1.lua.


Hmmm...O mais simples é fazer todos os dofile() em relação ao main,
i.e. dofile('scripts/others/file3.lua') no file1.
Mas se você faz questão de não usar '/scripts/' no file1, o fix mais
simples que consigo pensar é appendar o package.path e usar require em
vez de dofile.

Talvez alguém tenha alguma idéia melhor.

--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Elias Barrionovo
In reply to this post by Anderson Pimentel
2013/10/30 Anderson Pimentel <[hidden email]>:
> Sim, mas como eu faria para usar o dofile como require?
>
> você falou para appendar o package.path, como sou iniciante ainda não
> entendi como fazer isso. :/


O package.path é só uma string com vários paths separados por ";".
Quando você chama o require("meumodulo"), ele vai nessa lista de path
em path, substituindo as ocorrências de "?" por "meumodulo" e tentando
abrir aquele arquivo; ele pára no primeiro que der certo. Além disso,
você pode chamar submodulos no require:
require("modulo.submodulo.arquivo'), e ele vai entender que cada ponto
é na verdade um '/'.

Supondo que você execute o interpretador do mesmo diretório onde está
presente o main.lua, é só trocar as chamadas de
dofile("scripts/file1.lua") para require("scripts.file1") e de
dofile("other/file3.lua") para require("scripts.other.file3").

Se você não quer chamar o segundo require com "scripts", você pode
colocar o o caminho da pasta scripts no seu package.path:

package.path = package.path .. ";./scripts/?.lua"  -- note o ";" no começo

Isso tudo tá documentado no manual:

http://www.lua.org/manual/5.1/pt/manual.html#pdf-require
http://www.lua.org/manual/5.1/pt/manual.html#pdf-package.path


--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Então Elias, obrigado pela resposta.

No meu caso, estou trabalhando com o lua, de forma que não tenho controle sobre que script vai ser executado, paenas tenho que deixar a opção disponível para quando chegar um script com a chamada dofile(ou require), o script seja executado na plataforma encontrando o path corretamente.

Ou seja, não sou eu quem crio o script que será executado, estou criando uma aplicação que qualquer um que souber lua, pode rodar determinadas funções que criei com Lua API. Estou trabalhando o lua como uma linguagem de configuração da minha apliacação, então alguém vai criar esse script, não eu.


Em 31 de outubro de 2013 10:32, Elias Barrionovo <[hidden email]> escreveu:
2013/10/30 Anderson Pimentel <[hidden email]>:
> Sim, mas como eu faria para usar o dofile como require?
>
> você falou para appendar o package.path, como sou iniciante ainda não
> entendi como fazer isso. :/


O package.path é só uma string com vários paths separados por ";".
Quando você chama o require("meumodulo"), ele vai nessa lista de path
em path, substituindo as ocorrências de "?" por "meumodulo" e tentando
abrir aquele arquivo; ele pára no primeiro que der certo. Além disso,
você pode chamar submodulos no require:
require("modulo.submodulo.arquivo'), e ele vai entender que cada ponto
é na verdade um '/'.

Supondo que você execute o interpretador do mesmo diretório onde está
presente o main.lua, é só trocar as chamadas de
dofile("scripts/file1.lua") para require("scripts.file1") e de
dofile("other/file3.lua") para require("scripts.other.file3").

Se você não quer chamar o segundo require com "scripts", você pode
colocar o o caminho da pasta scripts no seu package.path:

package.path = package.path .. ";./scripts/?.lua"  -- note o ";" no começo

Isso tudo tá documentado no manual:

http://www.lua.org/manual/5.1/pt/manual.html#pdf-require
http://www.lua.org/manual/5.1/pt/manual.html#pdf-package.path


--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Elias Barrionovo
2013/10/31 Anderson Pimentel <[hidden email]>:
> Ou seja, não sou eu quem crio o script que será executado, estou criando uma
> aplicação que qualquer um que souber lua, pode rodar determinadas funções
> que criei com Lua API. Estou trabalhando o lua como uma linguagem de
> configuração da minha apliacação, então alguém vai criar esse script, não
> eu.

Bem, já que você está criando a plataforma, você configura o
package.path como eu disse acima e não deixa seus usuários usarem o
dofile. Simples assim. =)


() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
Blz, vou tentar fazer de uma forma que sempre que o dofile seja executado, eu na verdade execute o require


Em 31 de outubro de 2013 11:07, Elias Barrionovo <[hidden email]> escreveu:
2013/10/31 Anderson Pimentel <[hidden email]>:
> Ou seja, não sou eu quem crio o script que será executado, estou criando uma
> aplicação que qualquer um que souber lua, pode rodar determinadas funções
> que criei com Lua API. Estou trabalhando o lua como uma linguagem de
> configuração da minha apliacação, então alguém vai criar esse script, não
> eu.

Bem, já que você está criando a plataforma, você configura o
package.path como eu disse acima e não deixa seus usuários usarem o
dofile. Simples assim. =)


() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Elias Barrionovo
Aliás, considerando que qualquer um pode fazer scripts para a sua
aplicação, você provavelmente vai precisar de um bom sandbox,
restringindo acesso às funções os.*, debug.*, ao próprio package.path
e, bem importante, impedir que sejam carregdos códigos Lua
pré-compilados. Impedir o uso de dofile é só um detalhe perto disso
tudo. Aliás, já que você vai "patchear" o dofile para chamar o
require, é mais fácil você patchear o dofile para procurar o arquivo
nos diretórios pré-estabelicidos.

2013/10/31 Anderson Pimentel <[hidden email]>:

> Blz, vou tentar fazer de uma forma que sempre que o dofile seja executado,
> eu na verdade execute o require
>
>
> Em 31 de outubro de 2013 11:07, Elias Barrionovo <[hidden email]>
> escreveu:
>>
>> 2013/10/31 Anderson Pimentel <[hidden email]>:
>> > Ou seja, não sou eu quem crio o script que será executado, estou criando
>> > uma
>> > aplicação que qualquer um que souber lua, pode rodar determinadas
>> > funções
>> > que criei com Lua API. Estou trabalhando o lua como uma linguagem de
>> > configuração da minha apliacação, então alguém vai criar esse script,
>> > não
>> > eu.
>>
>> Bem, já que você está criando a plataforma, você configura o
>> package.path como eu disse acima e não deixa seus usuários usarem o
>> dofile. Simples assim. =)
>>
>>
>> () - www.asciiribbon.org
>> /\ - ascii ribbon campaign against html e-mail and proprietary attachments
>>
>> --
>> Lua BR - http://groups.google.com/group/lua-br
>> ---
>> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>> envie um e-mail para [hidden email].
>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> Att, Anderson Pimentel
>
> --
> Lua BR - http://groups.google.com/group/lua-br
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos
> Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Path relativo e absoluto no lua 5.1.5

Anderson Pimentel
verdade, na verdade já fiz com os.*, debug.*, e o package.loadlib


Em 31 de outubro de 2013 11:27, Elias Barrionovo <[hidden email]> escreveu:
Aliás, considerando que qualquer um pode fazer scripts para a sua
aplicação, você provavelmente vai precisar de um bom sandbox,
restringindo acesso às funções os.*, debug.*, ao próprio package.path
e, bem importante, impedir que sejam carregdos códigos Lua
pré-compilados. Impedir o uso de dofile é só um detalhe perto disso
tudo. Aliás, já que você vai "patchear" o dofile para chamar o
require, é mais fácil você patchear o dofile para procurar o arquivo
nos diretórios pré-estabelicidos.

2013/10/31 Anderson Pimentel <[hidden email]>:
> Blz, vou tentar fazer de uma forma que sempre que o dofile seja executado,
> eu na verdade execute o require
>
>
> Em 31 de outubro de 2013 11:07, Elias Barrionovo <[hidden email]>
> escreveu:
>>
>> 2013/10/31 Anderson Pimentel <[hidden email]>:
>> > Ou seja, não sou eu quem crio o script que será executado, estou criando
>> > uma
>> > aplicação que qualquer um que souber lua, pode rodar determinadas
>> > funções
>> > que criei com Lua API. Estou trabalhando o lua como uma linguagem de
>> > configuração da minha apliacação, então alguém vai criar esse script,
>> > não
>> > eu.
>>
>> Bem, já que você está criando a plataforma, você configura o
>> package.path como eu disse acima e não deixa seus usuários usarem o
>> dofile. Simples assim. =)
>>
>>
>> () - www.asciiribbon.org
>> /\ - ascii ribbon campaign against html e-mail and proprietary attachments
>>
>> --
>> Lua BR - http://groups.google.com/group/lua-br
>> ---
>> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>> envie um e-mail para [hidden email].
>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> Att, Anderson Pimentel
>
> --
> Lua BR - http://groups.google.com/group/lua-br
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos
> Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
NI!

() - www.asciiribbon.org
/\ - ascii ribbon campaign against html e-mail and proprietary attachments

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Att, Anderson Pimentel

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.