[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Proposal: package.(c)path as tables
- From: Russell Haley <russ.haley@...>
- Date: Wed, 6 Sep 2017 22:20:35 -0700
On Wed, Sep 6, 2017 at 4:32 AM, Dirk Laurie <dirk.laurie@gmail.com> wrote:
> 2017-09-06 10:26 GMT+02:00 Daurnimator <quae@daurnimator.com>:
>> At the moment, package.path and package.cpath are strings containing
>> semicolon separated lists.
>> I'd like to propose that they are transitioned to be sequences to
>> allow for easier programmatic manipulation.
>>
>> The environment variables LUA_PATH, LUA_PATH_5_4, LUA_CPATH, etc
>> wouldn't change: they'd just need to be parsed when the package
>> library is loaded.
>>
>> In the next release we can allow package.path and package.cpath to be
>> strings for compatibility.
>> However the construct `package.path = package.path ..
>> ";/my/path/?.lua" would break and need to be changed to
>> `table.insert(package.path, "/my/path/?.lua")`
>> If this breakage is too much, perhaps we could have three phases:
>> - phase 1. we allow table form, but still use string form on lua
>> command line application load.
>> - phase 2. we change the default to be table form; string form is deprecated
>> - phase 3. we remove support for string form.
>
> local path = {}
> package.path:gsub("[^;]*,function(x) path[#path+1]=x end
>
> A breaking change to save having to code that? DMML
--you were missing a double quote and a parenthesis
local path = {}
package.path:gsub("[^;]*",function(x) path[#path+1]=x end)
--proof
for i,v in pairs(path) do
print(i,v)
end
Thanks for this,
Russ