Jump to content

Module:ShaderDoc: Difference between revisions

From HedgeDocs
Justin113D (talk | contribs)
Shader links now trim around shader names
Justin113D (talk | contribs)
Added technical_features
Line 41: Line 41:
     return result;
     return result;


end
--[[
technical_features
This function produces single column table rows with code formatting.
Usage:
{{#invoke:ShaderDoc|technical_features|features=feature_a,feature_b,feature_c,etc}}
parameters:
    features: A comma separated list of technical features
]]
function shader_doc.technical_features( frame )
    local features = frame.args['features'];
    if features == nil then
        return shader_doc._error( 'Features not specified' );
    end
    local feature_list = mw.text.split( features, ',' );
    local result = '';
    for _, feature in ipairs( feature_list ) do
        local trimmed_feature = mw.text.trim(feature);
        result = result .. '|-\n|<code>' .. trimmed_feature .. '</code>\n';
    end
    return result;
end
end



Revision as of 15:37, 17 August 2025

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

--[[
technical_features

This function produces single column table rows with code formatting.

Usage:
{{#invoke:ShaderDoc|technical_features|features=feature_a,feature_b,feature_c,etc}}

parameters:
    features: A comma separated list of technical features
]]
function shader_doc.technical_features( frame )
    local features = frame.args['features'];

    if features == nil then
        return shader_doc._error( 'Features not specified' );
    end

    local feature_list = mw.text.split( features, ',' );
    local result = '';

    for _, feature in ipairs( feature_list ) do
        local trimmed_feature = mw.text.trim(feature);
        result = result .. '|-\n|<code>' .. trimmed_feature .. '</code>\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.