Module:Card image name
Implements {{Card image name}}.
Wikitext usage
The module exports a function for wikitext:
main
- Expects one unnamed argument: a card name or a pagename.
Modules usage
The module is callable, for internal uses via other modules.
- Expects one argument: a card name or a pagename.
-- <pre>
-- @name Card image name
-- @description Converts a card name to be used in the file name.
-- @see {{Card image name}}
-- @author [[User:Becasita]]
-- @contact [[User talk:Becasita]]
-------------------
-- Export variable:
-------------------
local CardImageName = {};
----------------
-- Load modules:
----------------
local DATA = require( 'Module:Data' );
local UTIL = require( 'Module:Util' );
---------------------
-- Utility functions:
---------------------
-- mw functions:
local split = mw.text.split;
--------------------
-- Module functions:
--------------------
-- @name getPageName
-- @description
local function getPageName( card )
if not card then
return '';
end
local smwName;
local query = mw.smw.ask( {
('[[%s]]'):format( card:gsub( '#', '' ) ),
'?Page name=',
limit = 1,
mainlabel = '-'
} );
if not query or UTIL.count( query ) == 0 or UTIL.count( query[1] ) == 0 then
return card;
end
return query[ 1 ][ 1 ];
end
local function normalize( pagename )
if not pagename then
return '';
end
return (split( pagename, '%s*%(' )[ 1 ])
:gsub( ' ' , '')
:gsub( '%-', ''):gsub( '–' , '')
:gsub( ',' , ''):gsub( '%.', ''):gsub( ':', '')
:gsub( '\'', ''):gsub( '"' , ''):gsub( '&', '')
:gsub( '%?', ''):gsub( '!' , '')
:gsub( '%%', ''):gsub( '=' , '')
:gsub( '/' , ''):gsub( '\\', '')
:gsub( '☆' , ''):gsub( '・' , '')
;
end
-- @name processArgs
-- @description Handles args (template call vs. module call).
local function processArgs( v )
if UTIL.isString( v ) then
-- If used through other modules.
return { UTIL.trim( v ) };
end
return require( 'Module:Arguments' ).getArgs( v, {
trim = true,
removeBlanks = true,
parentOnly = true
} );
end
-- @name main
-- @description Main function to be invoked. Handles args and execution.
function CardImageName.main( frame )
local PAGENAME = mw.title.getCurrentTitle().text;
local arg = processArgs( frame )[ 1 ];
local pagename = arg and arg ~= PAGENAME and arg ~= split( PAGENAME, '%s*%(' )[ 1 ]
and getPageName( arg )
or PAGENAME
;
local imageName = normalize( pagename );
return imageName;
end
----------
-- Return:
----------
return CardImageName;
-- </pre>