• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:ShipClassData"

From Kancolle Wiki
Jump to navigation Jump to search
m
Line 26: Line 26:
 
function ShipClassData:name_override()
 
function ShipClassData:name_override()
 
local result = {}
 
local result = {}
 +
local errors = {}
 
if self._prefix then
 
if self._prefix then
table.insert(result, self._prefix)
+
    if type(self._prefix) == 'string' then
end
+
    table.insert(result, self._prefix)
if self._name_override or self:base_name() then
+
else
    table.insert(result, self._name_override or self:base_name())
+
    table.insert(errors, '_prefix ' .. type(self._prefix))
 +
end
 +
    end
 +
    local name = self._name_override or self:base_name()
 +
if name then
 +
    if type(name) == 'string' then
 +
        table.insert(result, name)
 +
        else
 +
            table.insert(errors, 'name ' .. type(name))
 +
        end
 
end
 
end
 
if self._suffix then
 
if self._suffix then
table.insert(result, self._suffix)
+
    if type(self._suffix) == 'string' then
 +
    table.insert(result, self._suffix)
 +
else
 +
    table.insert(errors, '_suffix ' .. type(self._suffix))
 +
end
 
end
 
end
return table.concat(result, " ")
+
return table.concat(result, " "), table.concat(errors, ", ")
 
end
 
end
  

Revision as of 19:46, 28 August 2018

Documentation for this module may be created at Module:ShipClassData/doc

local BaseData = require("Module:BaseData")
local ShipClassData = BaseData{
	_class_suffix = "Class",
}

function ShipClassData:base_name()
	return self._name
end

function ShipClassData:short_base_name()
	return self._short_name or self:base_name()
end

function ShipClassData:name()
	local result = {}
	if self._prefix then
		table.insert(result, self._prefix)
	end
	table.insert(result, self:base_name())
	if self._suffix then
		table.insert(result, self._suffix)
	end
	return table.concat(result, " ")
end

function ShipClassData:name_override()
	local result = {}
	local errors = {}
	if self._prefix then
	    if type(self._prefix) == 'string' then
		    table.insert(result, self._prefix)
		else
		    table.insert(errors, '_prefix ' .. type(self._prefix))
		end
    end
    local name = self._name_override or self:base_name()
	if name then
	    if type(name) == 'string' then
	        table.insert(result, name)
        else
            table.insert(errors, 'name ' .. type(name))
        end
	end
	if self._suffix then
	    if type(self._suffix) == 'string' then
		    table.insert(result, self._suffix)
		else
		    table.insert(errors, '_suffix ' .. type(self._suffix))
		end
	end
	return table.concat(result, " "), table.concat(errors, ", ")
end

function ShipClassData:short_name()
	local result = {}
	if self._prefix then
		table.insert(result, self._prefix)
	end
	table.insert(result, self:short_base_name())
	if self._suffix then
		table.insert(result, self._suffix)
	end
	return table.concat(result, " ")
end

function ShipClassData:is_type()
	return self._is_type
end

function ShipClassData:base_type()
	return self._base_type
end

function ShipClassData:create(class)
	class = class or {}
	if class._class and not class._suffix then
		class._suffix = self._class_suffix
	end
	setmetatable(class, class)
	class.__index = self
	return class
end

ShipClassData.__call = ShipClassData.create

return ShipClassData