Localize doc.get_entry

This commit is contained in:
Wuzzy 2016-12-28 19:19:03 +01:00
parent 3e7adfa793
commit e80eff7ba5

View File

@ -74,6 +74,36 @@ doc.sub = {}
-- Status variables -- Status variables
local set_category_order_was_called = false local set_category_order_was_called = false
-- Returns the entry definition and true entry ID of an entry, taking aliases into account
local function get_entry(category_id, entry_id)
local category = doc.data.categories[category_id]
local entry
if category ~= nil then
entry = category.entries[entry_id]
end
if category == nil or entry == nil then
local c_alias = doc.data.aliases[category_id]
if c_alias then
local alias = c_alias[entry_id]
if alias then
category_id = alias.category_id
entry_id = alias.entry_id
category = doc.data.categories[category_id]
if category then
entry = category.entries[entry_id]
else
return nil
end
else
return nil
end
else
return nil
end
end
return entry, category_id, entry_id
end
--[[ Core API functions ]] --[[ Core API functions ]]
-- Add a new category -- Add a new category
@ -128,7 +158,7 @@ end
-- Marks a particular entry as viewed by a certain player, which also -- Marks a particular entry as viewed by a certain player, which also
-- automatically reveals it -- automatically reveals it
function doc.mark_entry_as_viewed(playername, category_id, entry_id) function doc.mark_entry_as_viewed(playername, category_id, entry_id)
local entry, category_id, entry_id = doc.get_entry(category_id, entry_id) local entry, category_id, entry_id = get_entry(category_id, entry_id)
if not entry then if not entry then
return return
end end
@ -147,7 +177,7 @@ end
-- Marks a particular entry as revealed/unhidden by a certain player -- Marks a particular entry as revealed/unhidden by a certain player
function doc.mark_entry_as_revealed(playername, category_id, entry_id) function doc.mark_entry_as_revealed(playername, category_id, entry_id)
local entry, category_id, entry_id = doc.get_entry(category_id, entry_id) local entry, category_id, entry_id = get_entry(category_id, entry_id)
if not entry then if not entry then
return return
end end
@ -215,7 +245,7 @@ end
-- Returns true if the specified entry has been viewed by the player -- Returns true if the specified entry has been viewed by the player
function doc.entry_viewed(playername, category_id, entry_id) function doc.entry_viewed(playername, category_id, entry_id)
local entry, category_id, entry_id = doc.get_entry(category_id, entry_id) local entry, category_id, entry_id = get_entry(category_id, entry_id)
if doc.data.players[playername].stored_data.viewed[category_id] == nil then if doc.data.players[playername].stored_data.viewed[category_id] == nil then
return false return false
else else
@ -225,7 +255,7 @@ end
-- Returns true if the specified entry is hidden from the player -- Returns true if the specified entry is hidden from the player
function doc.entry_revealed(playername, category_id, entry_id) function doc.entry_revealed(playername, category_id, entry_id)
local entry, category_id, entry_id = doc.get_entry(category_id, entry_id) local entry, category_id, entry_id = get_entry(category_id, entry_id)
local hidden = doc.data.categories[category_id].entries[entry_id].hidden local hidden = doc.data.categories[category_id].entries[entry_id].hidden
if doc.data.players[playername].stored_data.revealed[category_id] == nil then if doc.data.players[playername].stored_data.revealed[category_id] == nil then
return not hidden return not hidden
@ -251,7 +281,7 @@ function doc.get_entry_definition(category_id, entry_id)
if not doc.entry_exists(category_id, entry_id) then if not doc.entry_exists(category_id, entry_id) then
return nil return nil
end end
local entry, _, _ = doc.get_entry(category_id, entry_id) local entry, _, _ = get_entry(category_id, entry_id)
return entry return entry
end end
@ -284,7 +314,7 @@ function doc.show_entry(playername, category_id, entry_id, ignore_hidden)
minetest.show_formspec(playername, "doc:error_no_categories", doc.formspec_error_no_categories()) minetest.show_formspec(playername, "doc:error_no_categories", doc.formspec_error_no_categories())
return return
end end
local entry, category_id, entry_id = doc.get_entry(category_id, entry_id) local entry, category_id, entry_id = get_entry(category_id, entry_id)
if ignore_hidden or doc.entry_revealed(playername, category_id, entry_id) then if ignore_hidden or doc.entry_revealed(playername, category_id, entry_id) then
local playerdata = doc.data.players[playername] local playerdata = doc.data.players[playername]
playerdata.category = category_id playerdata.category = category_id
@ -309,7 +339,7 @@ end
-- * This category contains the specified entry -- * This category contains the specified entry
-- Aliases are taken into account -- Aliases are taken into account
function doc.entry_exists(category_id, entry_id) function doc.entry_exists(category_id, entry_id)
return doc.get_entry(category_id, entry_id) ~= nil return get_entry(category_id, entry_id) ~= nil
end end
-- Sets the order of categories in the category list -- Sets the order of categories in the category list
@ -775,36 +805,6 @@ function doc.formspec_error_hidden(category_id, entry_id)
return formstring return formstring
end end
-- Returns the entry definition and true entry ID of an entry, taking aliases into account
function doc.get_entry(category_id, entry_id)
local category = doc.data.categories[category_id]
local entry
if category ~= nil then
entry = category.entries[entry_id]
end
if category == nil or entry == nil then
local c_alias = doc.data.aliases[category_id]
if c_alias then
local alias = c_alias[entry_id]
if alias then
category_id = alias.category_id
entry_id = alias.entry_id
category = doc.data.categories[category_id]
if category then
entry = category.entries[entry_id]
else
return nil
end
else
return nil
end
else
return nil
end
end
return entry, category_id, entry_id
end
function doc.generate_entry_list(cid, playername) function doc.generate_entry_list(cid, playername)
local formstring local formstring
if doc.data.players[playername].entry_textlist == nil if doc.data.players[playername].entry_textlist == nil
@ -986,7 +986,7 @@ function doc.formspec_entry(category_id, entry_id, playername)
else else
local category = doc.data.categories[category_id] local category = doc.data.categories[category_id]
local entry = doc.get_entry(category_id, entry_id) local entry = get_entry(category_id, entry_id)
local ename = entry.name local ename = entry.name
if ename == nil or ename == "" then if ename == nil or ename == "" then
ename = S("Nameless entry (@1)", entry_id) ename = S("Nameless entry (@1)", entry_id)