Difference between revisions of "Module:Utilities"

From Pathfinder Wiki
Line 40: Line 40:
 
function p.getNumber( str )
 
function p.getNumber( str )
 
return tonumber(string.match(str, '%d+'))
 
return tonumber(string.match(str, '%d+'))
 +
end
 +
 +
function p.isSysOp( frame )
 +
if (frame:preprocess('{{#ifsysop:true|false}}') == 'true') then
 +
return true
 +
else
 +
return false
 +
end
 
end
 
end
  
 
return p
 
return p

Revision as of 00:37, 28 July 2021

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

local p = {}

function p.localize( strToTrans, page )
	local frame = mw.getCurrentFrame()
	if ( strToTrans == nil or strToTrans == '' ) then
		mw.log( 'Utilities.localize: There is no string to translate! Returning empty string.' )
		return ''
	end
	mw.log( 'Utilities.localize (strToTrans, page - input): '..strToTrans..', '..tostring(page) )
	if ( page == nil or page == '' ) then
		page = 'All'
	end
	mw.log('Utilities.localize (page - checked): '..page)
	
	-- called every time ... shouldn't be a time issue needs between 40 and 80 microseconds
	local langSuffix = frame:preprocess( '/{{PAGELANGUAGE}}' )
	mw.log('Utilities.localize (langSuffix): '..langSuffix)
	
	-- check if input is a number
	if ( tonumber(strToTrans) ~= nil ) then
		mw.log('Utilities.localize: Input String is a number, return it!')
		return strToTrans
	end
	
	local strFromTrans = frame:callParserFunction( '#lst', { 'Localization:'..page..langSuffix, strToTrans } )
	-- did translation work?
	if ( strFromTrans ~= '') then
		return strFromTrans
	else
		-- add to error category
		-- [[Category:Missing Localization/{{{2|All}}}/{{{1|unsupplied}}}{{GetLangSuffix}}]]
		local newErrorCategory = '[[Category:Missing Localization/'..page..'/'..strToTrans..langSuffix..']]'
		local errorCategories = frame:callParserFunction( '#var', 'localizationErrorCategories' )
		frame:callParserFunction( '#vardefine', { 'localizationErrorCategories', errorCategories..newErrorCategory } )
		return strToTrans
	end
	
end

function p.getNumber( str )
	return tonumber(string.match(str, '%d+'))
end

function p.isSysOp( frame )
	if (frame:preprocess('{{#ifsysop:true|false}}') == 'true') then
		return true
	else
		return false
	end
end

return p