(Fix \t on the comments. Fix :tag() (missing «:»). More development on the card list stuff. Rough draft for the table design.) Tag: sourceedit |
(Some code hints) Tag: sourceedit |
||
Line 180: | Line 180: | ||
local _header = parameters['header']; |
local _header = parameters['header']; |
||
local _rarity = parameters['rarity']; |
local _rarity = parameters['rarity']; |
||
+ | -- You don't really want to name this object "table", due to conflicts with the keyword. |
||
local table = mw.html.create( 'table' ) |
local table = mw.html.create( 'table' ) |
||
:addClass('wikitable'):addClass('sortable'):addClass('card-list') |
:addClass('wikitable'):addClass('sortable'):addClass('card-list') |
||
Line 186: | Line 187: | ||
:tag('th'):attr('scope','col'):attr('colspan',counter_colspan):wikitext(_header):done() |
:tag('th'):attr('scope','col'):attr('colspan',counter_colspan):wikitext(_header):done() |
||
:done() |
:done() |
||
+ | -- rather than all the colspan, what you really should use here is the <caption> element |
||
end |
end |
||
table:tag('tr') |
table:tag('tr') |
||
Line 238: | Line 240: | ||
_rarityCard = cardList_array_std[2]; |
_rarityCard = cardList_array_std[2]; |
||
_qtyCard = cardList_array_std[3]; |
_qtyCard = cardList_array_std[3]; |
||
+ | -- _nameCard, _rarityCard, _qtyCard = cardList_array_std |
||
else |
else |
||
_numberCard = cardList_array_std[1]; |
_numberCard = cardList_array_std[1]; |
||
Line 243: | Line 246: | ||
_rarityCard = cardList_array_std[3]; |
_rarityCard = cardList_array_std[3]; |
||
_qtyCard = cardList_array_std[4]; |
_qtyCard = cardList_array_std[4]; |
||
+ | -- _numberCard, _nameCard, _rarityCard, _qtyCard = cardList_array_std |
||
end |
end |
||
_nameCard_localized = LN.localized_name( _nameCard, _language ); |
_nameCard_localized = LN.localized_name( _nameCard, _language ); |
Revision as of 00:12, 10 August 2017
Module documentation
[create]
The documentation for this module is missing. Click here to create it.
--[[
Var list:
(so I can keep track of what to use)
------
# Set:
-> PAGENAME // {{PAGENAME}};
-> NAMESPACE // {{NAMESPACE}};
-> _rg // Region code;
-> _region // Region name;
-> _ln // Language code;
-> _language // Language name;
-> nameSet_parts // Aux var containing the parts for the set name by «(»;
-> _nameSet // Set name;
-> _nameSet_localized // Localized set name;
-> _qty // Quantity value;
---------
# Design:
-> header // Page header (HTML);
-> category // Category;
--------------
# List (main):
-> cardList_input // List of cards passed;
-> cardList_array // Array of the above (by «\n»).
-> extra_column // If there's an extra column ({{{col}}});
--------
# Table:
-> _header // {{{header}}};
-> _rarity // {{{rarity}}};
-> table // Table to dsiplay (HTML);
-----------------
# List (entries):
## Section:
-> _headerSection // For sections («!:»), the header info («header::»);
-> _raritySection // For sections («!:»), the rarity info («rarity::»);
-> _qtySection // For sections («!:»), the quantity info («qty::»);
## Standard values (passed and parsed directly: <number>; <name>; <rarity>; <qty>;):
-> _nameCard // Card name (<name>);
-> _nameCard_localized // Localized card name;
-> _numberCard // Card number (<number>);
-> _rarityCard // Card rarity (<rarity>);
-> _typeCard // Card type (or category);
-> _qtyCard // Card quantity (<qty>);
## Alternate values (literal, separated by «//»):
-> _nameCard_alt // «name::»;
-> _nameCard_localized_alt // «name-local::»;
-> _numberCard_alt // «number::»;
-> _rarityCard_alt // «rarity::»;
-> _typeCard_alt // «category::»;
-> _description // «description::»;
-> _extra // «<lowercased_column_name>::», where the column name is «extra_column»;
## Processing:
-> cardList_array_parts// Array of «cardList_array» divided by «//»;
-> cardList_array_std // Array of [1] of the above, divided by «;»;
--------
# Flags:
-> notEnglish // Boolean;
-> italics // Italicized name;
-> qty // Boolean: exists {{{qty}}};
-> noAbbr // Boolean: if {{{abbr}}} is set off;
->
-----------
# Counters:
-> colspan // Number of columns (colspan);
]]
----------
-- Start:
----------
local myInput = {};
-- Load outside data and modules:
local data = mw.loadData( 'Module:Set list/data' );
local LN = require( 'Module:Set list/name' ); -- For Localized Name.
function myInput.list( frame )
-- Get arguments:
-- { '1' or 'list', 'region', 'set', 'qty', 'abbr', 'col', 'header', 'rarity' }
local parameters = frame.args;
-- Load outside data:
local rg_list = data.rg_list;
local region_list = data.region_list;
local ln_list = data.ln_list;
local language_list = data.language_list;
-- {{PAGENAME}}
local PAGENAME = mw.title.getCurrentTitle().text;
-- {{NAMESPACE}}
local NAMESPACE = mw.title.getCurrentTitle().nsText;
----------------------------------------
-- Define vars related to the set info:
----------------------------------------
-- Region and language:
local _rg = parameters['region'] and parameters['region']:lower();
local _region = '';
if _rg == nil or _rg == '' then
--_region = string.match( PAGENAME, '%-(%a*)' ):lower(); -- a value is needed always!
return '<strong class="error">Error: A «region» is always needed!</strong>';
else
_region = region_list[_rg] or region_list['default'];
end
local flag_notEnglish = true;
local flag_italics = 'italic';
local _ln = ln_list[_rg];
local _language = language_list[_ln];
if _ln == 'en' then
flag_notEnglish = false;
end
if _ln == 'ja' or _ln == 'zh' or _ln == 'ko' then
flag_italics = 'normal';
end
-- Set name:
local _nameSet = parameters['set'];
if _nameSet == nil or _nameSet == '' then
local nameSet_parts = mw.text.split( PAGENAME, ' %(' );
if nameSet_parts[3] == nil or nameSet_parts[3] == '' then
_nameSet = nameSet_parts[1]; -- Set name doesn't contain dab text.
else
_nameSet = nameSet_parts[1] ..' ('.. nameSet_parts[2]; -- Set name contains dab text.
end
end
local _nameSet_localized = LN.localized_name( _nameSet, _language );
-- Set abbreviation:
local _abbr = parameters['abbr'] and parameters['abbr']:lower();
local flag_noAbbr = false;
if _abbr == 'no' or _abbr == 'none' or _abbr == 'off' or _abbr == 'false' or _abbr == '0' then
flag_noAbbr = true;
end
-- Quantity (main):
local _qty = parameters['qty']; -- $qty-value
local flag_qty = false;
if not(_qty == nil or _qty == '') then
flag_qty = true;
_qty = tonumber(_qty) or 1;
end
-----------------------
-- Design page header:
-----------------------
local header = mw.html.create( 'div' ):css('text-align', 'center')
:tag('span'):css{
['font-size'] = '120%',
['font-weight'] = 'bold',
['font-style'] = 'italic'
}
:wikitext('[[' .._nameSet.. ']]')
:done()
if flag_notEnglish and _nameSet_localized ~= '' and _nameSet_localized then
header:tag('br'):done()
:tag('span'):css{
['font-weight'] ='bold',
['font-style'] = flag_italics
}
:wikitext(_nameSet_localized)
:done()
end
header:tag('br'):done()
:wikitext(_region)
:allDone()
local category = string.format('[['..'Category:%s %s]]', _region, NAMESPACE)
---------------------------
-- Process the list array:
---------------------------
-- General:
local cardList_input = parameters['list'] or parameters['1'] or parameters[1]; -- @INPUT
local cardList_array = mw.text.split( cardList_input, '\n' );
local extra_column = parameters['col'];
local counter_colspan = 4;
if flag_notEnglish then counter_colspan = 5 end;
if flag_qty then counter_colspan = counter_colspan + 1 end;
if flag_noAbbr then counter_colspan = counter_colspan - 1 end;
if extra_column and extra_column ~= '' then counter_colspan = counter_colspan + 1 end;
-- Build table:
local _header = parameters['header'];
local _rarity = parameters['rarity'];
-- You don't really want to name this object "table", due to conflicts with the keyword.
local table = mw.html.create( 'table' )
:addClass('wikitable'):addClass('sortable'):addClass('card-list')
if _header and _header ~= '' then -- If {{{header}}}.
table:tag('tr')
:tag('th'):attr('scope','col'):attr('colspan',counter_colspan):wikitext(_header):done()
:done()
-- rather than all the colspan, what you really should use here is the <caption> element
end
table:tag('tr')
if not(flag_noAbbr) then
table:tag('th'):attr('scope','col'):wikitext('Card number'):done()
end
if flag_notEnglish then
table:tag('th'):attr('scope','col'):wikitext('English name'):done()
:tag('th'):attr('scope','col'):wikitext(_language..' name'):done()
else
table:tag('th'):attr('scope','col'):wikitext('Name'):done()
end
table:tag('th'):attr('scope','col'):wikitext('Rarity'):done()
:tag('th'):attr('scope','col'):wikitext('Category'):done()
if flag_qty then
table:tag('th'):attr('scope','col'):wikitext('Qty'):done()
end
if extra_column and extra_column ~= '' then
table:tag('th'):attr('scope','col'):wikitext(extra_column):done()
end
table:done() -- Close <tr>
-- Process list results:
local _headerSection, _raritySection, _qtySection; -- Section info.
local _nameCard, _nameCard_localized, _numberCard, _rarityCard, _typeCard, _qtyCard; -- Standard info.
local _nameCard_alt, _nameCard_localized_alt, _numberCard_alt, _rarityCard_alt, _typeCard_alt,
_description, _extra; -- Alternate info.
for index, value in ipairs(cardList_array) do
if value:match('!:') then
-- It's a section; contains section info.
_headerSection = cardList_array[index]:match('header::(.-);');
_raritySection = cardList_array[index]:match('rarity::(.-);');
_qtySection = cardList_array[index]:match( 'qty::(.-);');
if _headerSection then
table:tag('tr')
:tag('th'):attr('scope','col'):attr('colspan',counter_colspan):wikitext(_headerSection):done()
:done()
end
elseif cardList_array[index]:match('^(%s*)$') then
-- Nothing: empty line.
else
local cardList_array_parts = mw.text.split( cardList_array[index], '//' );
--[[
cardList_array_parts[1] has the standard values ($values-standard);
cardList_array_parts[2] has the alternate values ($values-alternate);
]]
local cardList_array_std = mw.text.split( cardList_array_parts[1], ';' );
if flag_noAbbr then
_nameCard = cardList_array_std[1];
_rarityCard = cardList_array_std[2];
_qtyCard = cardList_array_std[3];
-- _nameCard, _rarityCard, _qtyCard = cardList_array_std
else
_numberCard = cardList_array_std[1];
_nameCard = cardList_array_std[2];
_rarityCard = cardList_array_std[3];
_qtyCard = cardList_array_std[4];
-- _numberCard, _nameCard, _rarityCard, _qtyCard = cardList_array_std
end
_nameCard_localized = LN.localized_name( _nameCard, _language );
_typeCard = frame:expandTemplate{ title = 'Card type', args = { _nameCard } };
-- TO DO: process each one of these to «display» vars.
-- Deal with alt values.
-- Add to table:
-- (rough draft!)
table:tag('tr')
:tag('td'):wikitext(_numberCard):done()
:tag('td'):wikitext(_nameCard):done()
:tag('td'):wikitext(_nameCard_localized):done()
:tag('td'):wikitext(_rarityCard):done()
:tag('td'):wikitext(_typeCard):done()
:done()
end
end
table:allDone() -- Close <table> (for testing)
-- For debug.
local debug = mw.html.create( 'ul' )
:tag('li'):tag('code'):wikitext('PAGENAME'):done():wikitext(': '..PAGENAME):done()
:tag('li'):tag('code'):wikitext('NAMESPACE'):done():wikitext(': '..NAMESPACE):done()
:tag('li'):tag('code'):wikitext('_rg'):done():wikitext(': '.._rg):done()
:tag('li'):tag('code'):wikitext('_region'):done():wikitext(': '.._region):done()
:tag('li'):tag('code'):wikitext('_ln'):done():wikitext(': '.._ln):done()
:tag('li'):tag('code'):wikitext('_language'):done():wikitext(': '.._language):done()
:tag('li'):tag('code'):wikitext('_nameSet'):done():wikitext(': '.._nameSet):done()
:tag('li'):tag('code'):wikitext('_nameSet_localized'):done():wikitext(': '.._nameSet_localized):done()
:tag('li'):tag('code'):wikitext('_qty'):done():wikitext(': '..tostring(_qty)):done()
:tag('li'):wikitext('<b>Flags</b>'):done()
:tag('li'):tag('code'):wikitext('flag_notEnglish'):done():wikitext(': '..tostring(flag_notEnglish)):done()
:tag('li'):tag('code'):wikitext('flag_italics'):done():wikitext(': '..flag_italics):done()
:tag('li'):tag('code'):wikitext('flag_qty'):done():wikitext(': '..tostring(flag_qty)):done()
:tag('li'):tag('code'):wikitext('flag_noAbbr'):done():wikitext(': '..tostring(flag_noAbbr)):done()
:tag('li'):wikitext('<b>List</b>'):done()
:tag('li'):tag('code'):wikitext('extra_column'):done():wikitext(': '..tostring(extra_column)):done()
:tag('li'):tag('code'):wikitext('counter_colspan'):done():wikitext(': '..counter_colspan):done()
:tag('li'):tag('code'):wikitext('cardList_input'):done():wikitext(': '..tostring(cardList_input)):done()
:done()
return tostring(debug)..tostring(header)..category..tostring(table); --the set list page;
end
return myInput;