Module:Case

From Heroes 3 wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

See usage on Template:T, Template:u, and template:l.


local p = {} --p stands for package

langObject = mw.getLanguage('simple')

local function has_value (tab, val)
    for index, value in ipairs(tab) do
        if langObject:lc(value) == langObject:lc(val) then
            return true
        end
    end
    return false
end

function p.title_case(frame)
	plain = false
	if frame.args.plain == "true" then
		plain = true
	end
	split = frame.args.split
	if split == "space" then
		split = " "
	end
	replace = split
	if frame.args.replace ~= "" then
		replace = frame.args.replace
	end
	parts = mw.text.split(frame.args.link, split, plain)
	lower = mw.text.split(frame.args.lower, ",", true)
	title = ""
	for i, part in pairs(parts) do
		if i > 1 and i < table.getn(parts) and has_value(lower, part) then
			title = title .. langObject:lc(part) .. replace
		else
			title = title .. langObject:ucfirst(langObject:lc(part)) .. replace
		end
	end
	if table.getn(parts) > 1 then
		title = string.sub(title, 0, string.len(title) - string.len(replace))
	end
	if frame.args.nolink == "true" then
		return title
	end
    return "[[" .. frame.args.link .. "|" .. title .. "]]"
end

function p.uppercase_first_letter(frame)
	uc_first_letter = langObject:ucfirst(langObject:lc(frame.args.link))
	if frame.args.nolink == "true" then
		return uc_first_letter
	end
    return "[[" .. frame.args.link .. "|" .. uc_first_letter .. "]]"
end

function p.lowercase(frame)
	lc = langObject:lc(frame.args.link)
	if frame.args.nolink == "true" then
		return lc
	end
    return "[[" .. frame.args.link .. "|" .. lc .. "]]"
end

return p