-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Tidy up generate_from_settingtypes.lua a bit.
* Multiline strings * Table-concat instead of String-concats * string.rep instead of loop-concat * string.format %q instead of manual quotation by gsub * Assert writeable files * Generate new settings_translation_file
- Loading branch information
Showing
2 changed files
with
57 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,99 +1,99 @@ | ||
local settings = ... | ||
|
||
local function create_minetest_conf_example() | ||
local result = "# This file contains a list of all available settings and their default value for minetest.conf\n" .. | ||
"\n" .. | ||
"# By default, all the settings are commented and not functional.\n" .. | ||
"# Uncomment settings by removing the preceding #.\n" .. | ||
"\n" .. | ||
"# minetest.conf is read by default from:\n" .. | ||
"# ../minetest.conf\n" .. | ||
"# ../../minetest.conf\n" .. | ||
"# Any other path can be chosen by passing the path as a parameter\n" .. | ||
"# to the program, eg. \"minetest.exe --config ../minetest.conf.example\".\n" .. | ||
"\n" .. | ||
"# Further documentation:\n" .. | ||
"# http://wiki.minetest.net/\n" .. | ||
"\n" | ||
local concat = table.concat | ||
local insert = table.insert | ||
local sprintf = string.format | ||
local rep = string.rep | ||
|
||
local minetest_example_header = [[ | ||
# This file contains a list of all available settings and their default value for minetest.conf | ||
# By default, all the settings are commented and not functional. | ||
# Uncomment settings by removing the preceding #. | ||
# minetest.conf is read by default from: | ||
# ../minetest.conf | ||
# ../../minetest.conf | ||
# Any other path can be chosen by passing the path as a parameter | ||
# to the program, eg. "minetest.exe --config ../minetest.conf.example". | ||
# Further documentation: | ||
# http://wiki.minetest.net/ | ||
]] | ||
|
||
local function create_minetest_conf_example() | ||
local result = { minetest_example_header } | ||
for _, entry in ipairs(settings) do | ||
if entry.type == "category" then | ||
if entry.level == 0 then | ||
result = result .. "#\n# " .. entry.name .. "\n#\n\n" | ||
insert(result, "#\n# " .. entry.name .. "\n#\n\n") | ||
else | ||
for i = 1, entry.level do | ||
result = result .. "#" | ||
end | ||
result = result .. "# " .. entry.name .. "\n\n" | ||
insert(result, rep("#", entry.level)) | ||
insert(result, "# " .. entry.name .. "\n\n") | ||
end | ||
else | ||
if entry.comment ~= "" then | ||
for _, comment_line in ipairs(entry.comment:split("\n", true)) do | ||
result = result .."# " .. comment_line .. "\n" | ||
insert(result, "# " .. comment_line .. "\n") | ||
end | ||
end | ||
result = result .. "# type: " .. entry.type | ||
insert(result, "# type: " .. entry.type) | ||
if entry.min then | ||
result = result .. " min: " .. entry.min | ||
insert(result, " min: " .. entry.min) | ||
end | ||
if entry.max then | ||
result = result .. " max: " .. entry.max | ||
insert(result, " max: " .. entry.max) | ||
end | ||
if entry.values then | ||
result = result .. " values: " .. table.concat(entry.values, ", ") | ||
insert(result, " values: " .. concat(entry.values, ", ")) | ||
end | ||
if entry.possible then | ||
result = result .. " possible values: " .. entry.possible:gsub(",", ", ") | ||
insert(result, " possible values: " .. entry.possible:gsub(",", ", ")) | ||
end | ||
result = result .. "\n" | ||
local append = "" | ||
insert(result, "\n") | ||
local append | ||
if entry.default ~= "" then | ||
append = " " .. entry.default | ||
end | ||
result = result .. "# " .. entry.name .. " =" .. append .. "\n\n" | ||
insert(result, sprintf("# %s =%s\n\n", entry.name, append or "")) | ||
end | ||
end | ||
return result | ||
return concat(result) | ||
end | ||
|
||
local function create_translation_file() | ||
local result = "// This file is automatically generated\n" .. | ||
"// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files\n" .. | ||
"// To update it, refer to the bottom of builtin/mainmenu/tab_settings.lua\n\n" .. | ||
"fake_function() {\n" | ||
local translation_file_header = [[ | ||
// This file is automatically generated | ||
// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files | ||
// To update it, refer to the bottom of builtin/mainmenu/dlg_settings_advanced.lua | ||
fake_function() {]] | ||
|
||
local function create_translation_file() | ||
local result = { translation_file_header } | ||
for _, entry in ipairs(settings) do | ||
if entry.type == "category" then | ||
local name_escaped = entry.name:gsub("\"", "\\\"") | ||
result = result .. "\tgettext(\"" .. name_escaped .. "\");\n" | ||
insert(result, sprintf("\tgettext(%q);", entry.name)) | ||
else | ||
if entry.readable_name then | ||
local readable_name_escaped = entry.readable_name:gsub("\"", "\\\"") | ||
result = result .. "\tgettext(\"" .. readable_name_escaped .. "\");\n" | ||
insert(result, sprintf("\tgettext(%q);", entry.readable_name)) | ||
end | ||
if entry.comment ~= "" then | ||
local comment_escaped = entry.comment:gsub("\n", "\\n") | ||
comment_escaped = comment_escaped:gsub("\"", "\\\"") | ||
result = result .. "\tgettext(\"" .. comment_escaped .. "\");\n" | ||
insert(result, "\tgettext(\"" .. comment_escaped .. "\");") | ||
end | ||
end | ||
end | ||
result = result .. "}\n" | ||
return result | ||
insert(result, "}\n") | ||
return concat(result, "\n") | ||
end | ||
|
||
if false then | ||
local file = io.open("minetest.conf.example", "w") | ||
if file then | ||
file:write(create_minetest_conf_example()) | ||
file:close() | ||
end | ||
end | ||
local file = assert(io.open("minetest.conf.example", "w")) | ||
file:write(create_minetest_conf_example()) | ||
file:close() | ||
|
||
file = assert(io.open("src/settings_translation_file.cpp", "w")) | ||
file:write(create_translation_file()) | ||
file:close() | ||
|
||
if false then | ||
local file = io.open("src/settings_translation_file.cpp", "w") | ||
if file then | ||
file:write(create_translation_file()) | ||
file:close() | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters