Jump to content

Module:ShaderDoc

From HedgeDocs
Revision as of 15:25, 17 August 2025 by Justin113D (talk | contribs) (Shader links now trim around shader names)

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

--[[

This module provides several functions used in the "Shader_Documentation" template

]]

local shader_doc = {}

--[[
shader_link_list

This function produces a bullet list of links to shaders

Usage:
{{#invoke:ShaderDoc|shader_link_list|game=game_name|shaders=shader_a,shader_b,shader_c,etc}}

parameters:
    game: The shader link prefix
    shaders: A comma separated list of shaders to list
]]
function shader_doc.shader_link_list( frame )
    local game = frame.args['game'];
    local shaders = frame.args['shaders'];

    if game == nil then
        return shader_doc._error( 'Game not specified' );
    end

    if shaders == nil then
        return shader_doc._error( 'Shaders not specified' );
    end

    local shader_list = mw.text.split( shaders, ',' );
    local result = '';

    for _, shader in ipairs( shader_list ) do
        local trimmed_shader = mw.text.trim(shader);
        result = result .. '* [[' .. game .. ' Shaders - ' .. trimmed_shader .. '|' .. trimmed_shader .. ']]\n';
    end

    return result;

end

--[[
Helper function to handle error messages.
]]
function shader_doc._error( error_str )
	local frame = mw.getCurrentFrame();
	local error_category = frame.args.error_category or 'Errors reported by Module String';
	local ignore_errors = frame.args.ignore_errors or false;
	local no_category = frame.args.no_category or false;

	if shader_doc._getBoolean(ignore_errors) then
		return '';
	end

	local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>';
	if error_category ~= '' and not shader_doc._getBoolean( no_category ) then
		error_str = '[[Category:' .. error_category .. ']]' .. error_str;
	end

	return error_str;
end

--[[
Helper Function to interpret boolean strings
]]
function shader_doc._getBoolean( boolean_str )
	local boolean_value;

	if type( boolean_str ) == 'string' then
		boolean_str = boolean_str:lower();
		if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
				or boolean_str == '' then
			boolean_value = false;
		else
			boolean_value = true;
		end
	elseif type( boolean_str ) == 'boolean' then
		boolean_value = boolean_str;
	else
		error( 'No boolean value found' );
	end
	return boolean_value
end

return shader_doc;
Cookies help us deliver our services. By using our services, you agree to our use of cookies.