Module:ShaderDoc
Appearance
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|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_docshader_link_list( frame )
local new_args = shader_doc_getParameters( frame.args, {'game'}, {'shaders'} );
local game = new_args['game'];
local shaders = new_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
result = result .. '* ' .. shader .. '\n';
end
return result;
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function shader_doc_getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
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