Lua - load properties into table
I would like to load a config.lua file containing global variables so that I can wrap and then access those variables into a local table.
config.lua looks like this:
prop01=value01
prop02=value02
script.lua would look like this
-- fragment starts --
local config = {
-- something goes here
}
-- fragment end --
print (config.prop01) -- should print "value01"
print (config.prop02) -- should print "value02"
How can I change the "fragment" to get expected printout?
properties lua
add a comment |
I would like to load a config.lua file containing global variables so that I can wrap and then access those variables into a local table.
config.lua looks like this:
prop01=value01
prop02=value02
script.lua would look like this
-- fragment starts --
local config = {
-- something goes here
}
-- fragment end --
print (config.prop01) -- should print "value01"
print (config.prop02) -- should print "value02"
How can I change the "fragment" to get expected printout?
properties lua
add a comment |
I would like to load a config.lua file containing global variables so that I can wrap and then access those variables into a local table.
config.lua looks like this:
prop01=value01
prop02=value02
script.lua would look like this
-- fragment starts --
local config = {
-- something goes here
}
-- fragment end --
print (config.prop01) -- should print "value01"
print (config.prop02) -- should print "value02"
How can I change the "fragment" to get expected printout?
properties lua
I would like to load a config.lua file containing global variables so that I can wrap and then access those variables into a local table.
config.lua looks like this:
prop01=value01
prop02=value02
script.lua would look like this
-- fragment starts --
local config = {
-- something goes here
}
-- fragment end --
print (config.prop01) -- should print "value01"
print (config.prop02) -- should print "value02"
How can I change the "fragment" to get expected printout?
properties lua
properties lua
asked Nov 24 '18 at 14:20
mpalmier73mpalmier73
102
102
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Swap the environment when loading the config file.
In lua 5.3 it is done using functions load
or loadfile
documented here:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file",config)
config_init_fun()
In lua 5.1 you will need to use setfenv
function:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file")
config_init_fun = setfenv (config_init_fun, config)
config_init_fun()
The assignment of setfenv result might be unnecessary but I don't have lua5.1 at hand to verify that.
All that assuming that config.lua is a valid script that is setting some global variables.
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
The remark is not aboutsetfenv
itself, it is needed without a doubt. What I don't know is whethersetfenv
alters the passed function or creates copy. That is, canfun=setfenv( fun, env )
be replaced by simplysetfenv( fun, env )
? Probably it can, but I did not test that.
– Dimitry
Nov 25 '18 at 0:25
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53459097%2flua-load-properties-into-table%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Swap the environment when loading the config file.
In lua 5.3 it is done using functions load
or loadfile
documented here:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file",config)
config_init_fun()
In lua 5.1 you will need to use setfenv
function:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file")
config_init_fun = setfenv (config_init_fun, config)
config_init_fun()
The assignment of setfenv result might be unnecessary but I don't have lua5.1 at hand to verify that.
All that assuming that config.lua is a valid script that is setting some global variables.
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
The remark is not aboutsetfenv
itself, it is needed without a doubt. What I don't know is whethersetfenv
alters the passed function or creates copy. That is, canfun=setfenv( fun, env )
be replaced by simplysetfenv( fun, env )
? Probably it can, but I did not test that.
– Dimitry
Nov 25 '18 at 0:25
add a comment |
Swap the environment when loading the config file.
In lua 5.3 it is done using functions load
or loadfile
documented here:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file",config)
config_init_fun()
In lua 5.1 you will need to use setfenv
function:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file")
config_init_fun = setfenv (config_init_fun, config)
config_init_fun()
The assignment of setfenv result might be unnecessary but I don't have lua5.1 at hand to verify that.
All that assuming that config.lua is a valid script that is setting some global variables.
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
The remark is not aboutsetfenv
itself, it is needed without a doubt. What I don't know is whethersetfenv
alters the passed function or creates copy. That is, canfun=setfenv( fun, env )
be replaced by simplysetfenv( fun, env )
? Probably it can, but I did not test that.
– Dimitry
Nov 25 '18 at 0:25
add a comment |
Swap the environment when loading the config file.
In lua 5.3 it is done using functions load
or loadfile
documented here:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file",config)
config_init_fun()
In lua 5.1 you will need to use setfenv
function:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file")
config_init_fun = setfenv (config_init_fun, config)
config_init_fun()
The assignment of setfenv result might be unnecessary but I don't have lua5.1 at hand to verify that.
All that assuming that config.lua is a valid script that is setting some global variables.
Swap the environment when loading the config file.
In lua 5.3 it is done using functions load
or loadfile
documented here:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file",config)
config_init_fun()
In lua 5.1 you will need to use setfenv
function:
local config={}
local config_init_fun = loadfile('config.lua',"configuration file")
config_init_fun = setfenv (config_init_fun, config)
config_init_fun()
The assignment of setfenv result might be unnecessary but I don't have lua5.1 at hand to verify that.
All that assuming that config.lua is a valid script that is setting some global variables.
answered Nov 24 '18 at 15:35
DimitryDimitry
9591516
9591516
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
The remark is not aboutsetfenv
itself, it is needed without a doubt. What I don't know is whethersetfenv
alters the passed function or creates copy. That is, canfun=setfenv( fun, env )
be replaced by simplysetfenv( fun, env )
? Probably it can, but I did not test that.
– Dimitry
Nov 25 '18 at 0:25
add a comment |
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
The remark is not aboutsetfenv
itself, it is needed without a doubt. What I don't know is whethersetfenv
alters the passed function or creates copy. That is, canfun=setfenv( fun, env )
be replaced by simplysetfenv( fun, env )
? Probably it can, but I did not test that.
– Dimitry
Nov 25 '18 at 0:25
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
Your solution works for me. I'm using Lua 5.1.5 and confirm that setfenv is necessary. Thanks!
– mpalmier73
Nov 24 '18 at 17:28
The remark is not about
setfenv
itself, it is needed without a doubt. What I don't know is whether setfenv
alters the passed function or creates copy. That is, can fun=setfenv( fun, env )
be replaced by simply setfenv( fun, env )
? Probably it can, but I did not test that.– Dimitry
Nov 25 '18 at 0:25
The remark is not about
setfenv
itself, it is needed without a doubt. What I don't know is whether setfenv
alters the passed function or creates copy. That is, can fun=setfenv( fun, env )
be replaced by simply setfenv( fun, env )
? Probably it can, but I did not test that.– Dimitry
Nov 25 '18 at 0:25
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53459097%2flua-load-properties-into-table%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown