Module:Common

From Foundation - Wiki
Revision as of 08:29, 24 December 2023 by Sakaratte (talk | contribs)
Jump to navigation Jump to search

Additional functions that are common to other modules. Although they could be called into templates the overhead call into lua would generally greater than using a built in mediawiki parser function where one exists.

When calling in to another module, use local com = require( "Module:Common"). This will ensure consistency between modules.


local a = require('Module:Arguments')
local com = {}

function com.trim(object)
	--Use of while instead of if incase multiple whitespaces are present.
	if com.exists(object) then
		while string.sub(object, 1, 1) == ' ' do 
			object = string.sub(object, 2)
		end
	
		while string.sub(object, string.len(object)) == ' ' do
			object = string.sub(object, 1, string.len(object) - 1)
		end
	end
	
	return object
end

function com.exists(object)
	if object == nil or object == '' then
		return false
	else
		return true
	end
end

function com.modulePagename(title)
	
	if not title then
		title = mw.title.getCurrentTitle().text
	end
	mw.log(title)
	local disambig = string.find(title, '%(')
	if string.sub(title, string.len(title)) == '%)' then
		local check = disambig
		while check do
			local check = string.find(title, '%(', check + 1)
			if check ~= 0 then
				disambig = check
			end
		end
	end
	
	title = string.sub(title, 1, disambig)
	return title
end

function com.pagename(frame)
	local args = a.getArgs(frame)
	return trim(com.modulePagename(args['title']))
end

function com.fUpper(text)
	local words = mw.text.split(text, '%s')
	for k, v in ipairs(words) do
		words[k] = v:sub(1,1):upper() .. (v:sub(2) or '')
	end
	
	return table.concat(words, ' ')
end

function com.firstUpper(frame)
	local args = a.getArgs(frame)
	return string.gsub(args[1], string.sub(args[1],1,1), string.upper(
		string.sub(args[1],1,1)))
end

return com