diff --git a/builtin/mainmenu/generate_from_settingtypes.lua b/builtin/mainmenu/generate_from_settingtypes.lua index 62d11b2..6c9ba27 100644 --- a/builtin/mainmenu/generate_from_settingtypes.lua +++ b/builtin/mainmenu/generate_from_settingtypes.lua @@ -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 \ No newline at end of file