Module:Rugby league match squad/sandbox

--

local getArgs = require('Module:Arguments').getArgs

local p={}

--functions

function p.main(frame)

local args = getArgs(frame)

local collapsed = args['collapsed'] or 'n' -- decide if table is collapsible or no

local align = args['align'] or 'right' -- table alignment on page (left, right or center, defaults to right if not set)

align = string.lower(align) --convert to lower case

local squadsize = args['squadsize'] or 18 --number of players to list

if tonumber(squadsize) > 26 then

squadsize = 26 --maximum squadsize allowed

end

--teams

local hometeam = args['hometeam']

local awayteam = args['awayteam']

--and colours for header rows

local homeBGcolour = args['homeBGcolour'] or 'inherit'

local homeFGcolour = args['homeFGcolour'] or 'inherit'

local homeBorder = args['homeBorder'] or 'none'

local awayBGcolour = args['awayBGcolour'] or 'inherit'

local awayFGcolour = args['awayFGcolour'] or 'inherit'

local awayBorder = args['awayBorder'] or 'none'

--set styles for home and away teams. Default is to inherit text and background colours from the stylesheet and border to none.

local homestyle = '

style= \"border:2px solid ' .. homeBorder .. ';background:' .. homeBGcolour .. '; color:' .. homeFGcolour .. ';\"
'

local awaystyle = '

style= \"border:2px solid ' .. awayBorder .. ';background:' .. awayBGcolour .. '; color:' .. awayFGcolour .. ';\"
'

--[[postion names determined by hemisphere. Can be north (n), south (s)

north/south (ns) or south/north (sn)]]--

local location = args['location']

location =string.lower(location) --convert to lower case

local abbr = args['abbr'] or 'n' -- set to y to use abbreviated position names, default is n

abbr = string.lower(abbr) -- convert to lower case

if location ~= "n" and location ~= "s" and location ~= "ns" and location ~= "sn" then

location = "n" --catchall

end

--define variable positions first

local pos_6=""

local pos_7=""

local pos_13=""

if location == "n" then

pos_6 = "Stand off"

pos_7 = "Scrum half"

pos_13 = "Loose forward"

if abbr == "y" then --abbreviated position names

pos_6 = "SO"

pos_7 = "SH"

pos_13 = "LF"

end

elseif location == "s" then

pos_6 = "Five eighth"

pos_7 = "Half back"

pos_13 = "Lock forward"

if abbr == "y" then --abbreviated position names

pos_6 = "FE"

pos_7 = "HB"

pos_13 = "LK"

end

elseif location == "ns" then

pos_6 = "Stand off/Five eighth"

pos_7 = "Scrum half/Half back"

pos_13 = "Loose forward/Lock forward"

if abbr == "y" then --abbreviated position names

pos_6 = "SO/FE"

pos_7 = "SH/HB"

pos_13 = "LF/LK"

end

elseif location == "sn" then --abbreviated position names

pos_6 = "Five eighth/Stand off"

pos_7 = "Half back/Scrum half"

pos_13 = "Lock forward/Loose forward"

if abbr == "y" then --abbreviated position names

pos_6 = "FE/SO"

pos_7 = "HB/SH"

pos_13 = "LK/LF"

end

end

--set rest of positions

local pos_1 = "Fullback"

local pos_2 = "Wing"

local pos_3 = "Centre"

local pos_4 = "Centre"

local pos_5 = "Wing"

local pos_8 = "Prop forward"

local pos_9 = "Hooker"

local pos_10 = "Prop forward"

local pos_11 = "Second row"

local pos_12 = "Second row"

local pos_14 = args['titleIN1'] or "Interchange" --allows for alternative position name

local pos_15 = args['titleIN2'] or "Interchange"

local pos_16 = args['titleIN3'] or "Interchange"

local pos_17 = args['titleIN4'] or "Interchange"

local pos_18 = args['titleIN5'] or "Concussion substitute" -- 18th player, can always be overwritten

if pos_18 == "Interchange" then

pos_18 = "Interchange" -- autolink alternative position

end

local pos_19 = "Interchange"

local pos_20 = "Interchange"

local pos_21 = "Interchange"

local pos_22 = "Interchange"

local pos_23 = "Interchange"

local pos_24 = "Interchange"

local pos_25 = "Interchange"

local pos_26 = "Interchange"

if abbr =="y" then --abbreviated position names

pos_1 = "FB"

pos_2 = "WG"

pos_3 = "CE"

pos_4 = "CE"

pos_5 = "WG"

pos_8 = "PR"

pos_9 = "HK"

pos_10 = "PF"

pos_11 = "SR"

pos_12 = "SR"

if pos_14 == "Interchange" then --no abbreviation if title isn't Interchange

pos_14 = "IN"

end

if pos_15 == "Interchange" then

pos_15 = "IN"

end

if pos_16 == "Interchange" then

pos_16 = "IN"

end

if pos_17 == "Interchange" then

pos_17 = "IN"

end

if pos_18 == "Concussion substitute" then

pos_18 = "CS"

end

if pos_18 == "Interchange" then --alternative position linking

pos_18 = "IN"

end

pos_19 = "IN"

pos_20 = "IN"

pos_21 = "IN"

pos_22 = "IN"

pos_23 = "IN"

pos_24 = "IN"

pos_25 = "IN"

pos_26 = "IN"

end

--Home players

local hplayer_1 =args['homeFB'] or ""

local hplayer_2 =args['homeWG1'] or ""

local hplayer_3 =args['homeCE1'] or ""

local hplayer_4 =args['homeCE2'] or ""

local hplayer_5 =args['homeWG2'] or ""

local hplayer_6 =args['homeSO'] or ""

local hplayer_7 =args['homeSH'] or ""

local hplayer_8 =args['homePR1'] or ""

local hplayer_9 =args['homeHK'] or ""

local hplayer_10 =args['homePR2'] or ""

local hplayer_11 =args['homeSR1'] or ""

local hplayer_12 =args['homeSR2'] or ""

local hplayer_13 =args['homeLF'] or ""

local hplayer_14 =args['homeIN1'] or ""

local hplayer_15 =args['homeIN2'] or ""

local hplayer_16 =args['homeIN3'] or ""

local hplayer_17 =args['homeIN4'] or ""

local hplayer_18 =args['homeIN5'] or ""

local hplayer_19 =args['homeIN6'] or ""

local hplayer_20 =args['homeIN7'] or ""

local hplayer_21 =args['homeIN8'] or ""

local hplayer_22 =args['homeIN9'] or ""

local hplayer_23 =args['homeIN10'] or ""

local hplayer_24 =args['homeIN11'] or ""

local hplayer_25 =args['homeIN12'] or ""

local hplayer_26 =args['homeIN13'] or ""

local hcoach = args['homeCoach'] or ""

-- Home team numbers

local hnumber_1 =args['homeFBnum'] or '1'

local hnumber_2 =args['homeWG1num'] or '2'

local hnumber_3 =args['homeCE1num'] or '3'

local hnumber_4 =args['homeCE2num'] or '4'

local hnumber_5 =args['homeWG2num'] or '5'

local hnumber_6 =args['homeSOnum'] or '6'

local hnumber_7 =args['homeSHnum'] or '7'

local hnumber_8 =args['homePR1num'] or '8'

local hnumber_9 =args['homeHKnum'] or '9'

local hnumber_10 =args['homePR2num'] or '10'

local hnumber_11 =args['homeSR1num'] or '11'

local hnumber_12 =args['homeSR2num'] or '12'

local hnumber_13 =args['homeLFnum'] or '13'

--following lines set player number to blank if no name is given

local hnumber_14 =args['homeIN1num'] or '14'

if hplayer_14 == "" then hnumber_14 = "" end

local hnumber_15 =args['homeIN2num'] or '15'

if hplayer_15 == "" then hnumber_15 = "" end

local hnumber_16 =args['homeIN3num'] or '16'

if hplayer_16 == "" then hnumber_16 = "" end

local hnumber_17 =args['homeIN4num'] or '17'

if hplayer_17 == "" then hnumber_17 = "" end

local hnumber_18 =args['homeIN5num'] or '18'

if hplayer_18 == "" then hnumber_18 = "" end

local hnumber_19 =args['homeIN6num'] or '19'

if hplayer_19 == "" then hnumber_19 = "" end

local hnumber_20 =args['homeIN7num'] or '20'

if hplayer_20 == "" then hnumber_20 = "" end

local hnumber_21 =args['homeIN8num'] or '21'

if hplayer_21 == "" then hnumber_21 = "" end

local hnumber_22 =args['homeIN9num'] or '22'

if hplayer_22 == "" then hnumber_22 = "" end

local hnumber_23 =args['homeIN10num'] or '23'

if hplayer_23 == "" then hnumber_23 = "" end

local hnumber_24 =args['homeIN11num'] or '24'

if hplayer_24 == "" then hnumber_24 = "" end

local hnumber_25 =args['homeIN12num'] or '25'

if hplayer_25 == "" then hnumber_25 = "" end

local hnumber_26 =args['homeIN13num'] or '26'

if hplayer_26 == "" then hnumber_26 = "" end

--Away players

local aplayer_1 =args['awayFB'] or ""

local aplayer_2 =args['awayWG1'] or ""

local aplayer_3 =args['awayCE1'] or ""

local aplayer_4 =args['awayCE2'] or ""

local aplayer_5 =args['awayWG2'] or ""

local aplayer_6 =args['awaySO'] or ""

local aplayer_7 =args['awaySH'] or ""

local aplayer_8 =args['awayPR1'] or ""

local aplayer_9 =args['awayHK'] or ""

local aplayer_10 =args['awayPR2'] or ""

local aplayer_11 =args['awaySR1'] or ""

local aplayer_12 =args['awaySR2'] or ""

local aplayer_13 =args['awayLF'] or ""

local aplayer_14 =args['awayIN1'] or ""

local aplayer_15 =args['awayIN2'] or ""

local aplayer_16 =args['awayIN3'] or ""

local aplayer_17 =args['awayIN4'] or ""

local aplayer_18 =args['awayIN5'] or ""

local aplayer_19 =args['awayIN6'] or ""

local aplayer_20 =args['awayIN7'] or ""

local aplayer_21 =args['awayIN8'] or ""

local aplayer_22 =args['awayIN9'] or ""

local aplayer_23 =args['awayIN10'] or ""

local aplayer_24 =args['awayIN11'] or ""

local aplayer_25 =args['awayIN12'] or ""

local aplayer_26 =args['awayIN13'] or ""

local acoach = args['awayCoach'] or ""

-- Away team numbers

local anumber_1 =args['awayFBnum'] or '1'

local anumber_2 =args['awayWG1num'] or '2'

local anumber_3 =args['awayCE1num'] or '3'

local anumber_4 =args['awayCE2num'] or '4'

local anumber_5 =args['awayWG2num'] or '5'

local anumber_6 =args['awaySOnum'] or '6'

local anumber_7 =args['awaySHnum'] or '7'

local anumber_8 =args['awayPR1num'] or '8'

local anumber_9 =args['awayHKnum'] or '9'

local anumber_10 =args['awayPR2num'] or '10'

local anumber_11 =args['awaySR1num'] or '11'

local anumber_12 =args['awaySR2num'] or '12'

local anumber_13 =args['awayLFnum'] or '13'

--following lines set player number to blank if no name is given

local anumber_14 =args['awayIN1num'] or '14'

if aplayer_14 == "" then anumber_14 = "" end

local anumber_15 =args['awayIN2num'] or '15'

if aplayer_15 == "" then anumber_15 = "" end

local anumber_16 =args['awayIN3num'] or '16'

if aplayer_16 == "" then anumber_16 = "" end

local anumber_17 =args['awayIN4num'] or '17'

if aplayer_17 == "" then anumber_17 = "" end

local anumber_18 =args['awayIN5num'] or '18'

if aplayer_18 == "" then anumber_18 = "" end

local anumber_19 =args['awayIN6num'] or '19'

if aplayer_19 == "" then anumber_19 = "" end

local anumber_20 =args['awayIN7num'] or '20'

if aplayer_20 == "" then anumber_20 = "" end

local anumber_21 =args['awayIN8num'] or '21'

if aplayer_21 == "" then anumber_21 = "" end

local anumber_22 =args['awayIN9num'] or '22'

if aplayer_22 == "" then anumber_22 = "" end

local anumber_23 =args['awayIN10num'] or '23'

if aplayer_23 == "" then anumber_23 = "" end

local anumber_24 =args['awayIN11num'] or '24'

if aplayer_24 == "" then anumber_24 = "" end

local anumber_25 =args['awayIN12num'] or '25'

if aplayer_25 == "" then anumber_25 = "" end

local anumber_26 =args['awayIN13num'] or '26'

if aplayer_26 == "" then anumber_26 = "" end

--sourcing

local source = args['source'] or ""

--fill table

local hplayer

local hnumber

local pos

local aplayer

local anumber

local t = {

{

hplayer = hplayer_1,

hnumber = hnumber_1,

pos = pos_1,

anumber = anumber_1,

aplayer = aplayer_1,

},

{

hplayer = hplayer_2,

hnumber = hnumber_2,

pos = pos_2,

anumber = anumber_2,

aplayer = aplayer_2,

},

{

hplayer = hplayer_3,

hnumber = hnumber_3,

pos = pos_3,

anumber = anumber_3,

aplayer = aplayer_3,

},

{

hplayer = hplayer_4,

hnumber = hnumber_4,

pos = pos_4,

anumber = anumber_4,

aplayer = aplayer_4,

},

{

hplayer = hplayer_5,

hnumber = hnumber_5,

pos = pos_5,

anumber = anumber_5,

aplayer = aplayer_5,

},

{

hplayer = hplayer_6,

hnumber = hnumber_6,

pos = pos_6,

anumber = anumber_6,

aplayer = aplayer_6,

},

{

hplayer = hplayer_7,

hnumber = hnumber_7,

pos = pos_7,

anumber = anumber_7,

aplayer = aplayer_7,

},

{

hplayer = hplayer_8,

hnumber = hnumber_8,

pos = pos_8,

anumber = anumber_8,

aplayer = aplayer_8,

},

{

hplayer = hplayer_9,

hnumber = hnumber_9,

pos = pos_9,

anumber = anumber_9,

aplayer = aplayer_9,

},

{

hplayer = hplayer_10,

hnumber = hnumber_10,

pos = pos_10,

anumber = anumber_10,

aplayer = aplayer_10,

},

{

hplayer = hplayer_11,

hnumber = hnumber_11,

pos = pos_11,

anumber = anumber_11,

aplayer = aplayer_11,

},

{

hplayer = hplayer_12,

hnumber = hnumber_12,

pos = pos_12,

anumber = anumber_12,

aplayer = aplayer_12,

},

{

hplayer = hplayer_13,

hnumber = hnumber_13,

pos = pos_13,

anumber = anumber_13,

aplayer = aplayer_13,

},

{

hplayer = hplayer_14,

hnumber = hnumber_14,

pos = pos_14,

anumber = anumber_14,

aplayer = aplayer_14,

},

{

hplayer = hplayer_15,

hnumber = hnumber_15,

pos = pos_15,

anumber = anumber_15,

aplayer = aplayer_15,

},

{

hplayer = hplayer_16,

hnumber = hnumber_16,

pos = pos_16,

anumber = anumber_16,

aplayer = aplayer_16,

},

{

hplayer = hplayer_17,

hnumber = hnumber_17,

pos = pos_17,

anumber = anumber_17,

aplayer = aplayer_17,

},

{

hplayer = hplayer_18,

hnumber = hnumber_18,

pos = pos_18,

anumber = anumber_18,

aplayer = aplayer_18,

},

{

hplayer = hplayer_19,

hnumber = hnumber_19,

pos = pos_19,

anumber = anumber_19,

aplayer = aplayer_19,

},

{

hplayer = hplayer_20,

hnumber = hnumber_20,

pos = pos_20,

anumber = anumber_20,

aplayer = aplayer_20,

},

{

hplayer = hplayer_21,

hnumber = hnumber_21,

pos = pos_21,

anumber = anumber_21,

aplayer = aplayer_21,

},

{

hplayer = hplayer_22,

hnumber = hnumber_22,

pos = pos_22,

anumber = anumber_22,

aplayer = aplayer_22,

},

{

hplayer = hplayer_23,

hnumber = hnumber_23,

pos = pos_23,

anumber = anumber_23,

aplayer = aplayer_23,

},

{

hplayer = hplayer_24,

hnumber = hnumber_24,

pos = pos_24,

anumber = anumber_24,

aplayer = aplayer_24,

},

{

hplayer = hplayer_25,

hnumber = hnumber_25,

pos = pos_25,

anumber = anumber_25,

aplayer = aplayer_25,

},

{

hplayer = hplayer_26,

hnumber = hnumber_26,

pos = pos_26,

anumber = anumber_26,

aplayer = aplayer_26,

},

-- add coaches as last row of array

{

hplayer = hcoach,

hnumber="",

pos = "Coach",

anumber="",

aplayer = acoach,

},

}

--check for 00 values in player numbers and replace with "". This allows players to show as unnmbered in teams using squad numbers e.g. trialists

for trow = 1, 26 do

if t[trow].hnumber == "00" then

t[trow].hnumber = ""

end

if t[trow].anumber == "00" then

t[trow].anumber = ""

end

end

--create table

--

tags refer to formatting information used in (see Template:Rugby league match squad/sandbox/styles.css)

local wt='' --main output string. Loops through the table t to extract info by positions

for i = 1, squadsize do

wt = wt .. t[i].hplayer .. '||' .. t[i].hnumber .. '||

' .. t[i].pos .. '
||' .. t[i].anumber .. '||' .. t[i].aplayer .. '\n|-\n|'

end

--add coaches if one or both is named

if hcoach ~="" or acoach~="" then

wt = wt .. t[27].hplayer .. '||' .. t[27].hnumber .. '||

' .. t[27].pos .. '
||' .. t[27].anumber .. '||' .. t[27].aplayer .. '\n|-\n|'

end

-- table headings. Set depending of page alignment (left, right or center) and collapsed (yes/no)

local table_style = ""

if align == 'right' and collapsed == 'n' then

table_style = '{| class = "table_style_right"'

end

if align == 'left' and collapsed == 'n' then

table_style = '{| class = "table_style_left"'

end

if align == 'center' and collapsed == 'n' then

table_style = '{| class = "table_style_center"'

end

if align == 'right' and collapsed == 'y' then

table_style = '{| class = "table_style_right mw-collapsible mw-collapsed"'

end

if align == 'left' and collapsed == 'y' then

table_style = '{| class = "table_style_left mw-collapsible mw-collapsed"'

end

if align == 'center' and collapsed == 'y' then

table_style = '{| class = "table_style_center mw-collapsible mw-collapsed"'

end

local caption= '+ class=\"nowrap\" | Team details'

-- make teams first data row in table

local header_row1 = 'colspan=2 ' .. homestyle .. '|' .. hometeam .. '!! rowspan=2

| Position !! colspan=2
'

.. awaystyle .. '|' .. awayteam .. '\n|-\n'

-- header row

local header_row2 = 'Name !! Number !! Number !! Name \n|-\n'

-- last row is source

local source_row = 'colspan=5 |

' ..source .. '
\n|'

-- put it all together

local return_t = table_style .. '\n|' .. caption ..'\n!' .. header_row1 .. '\n!' .. header_row2 .. '\n|'.. wt .. '}'

if source ~= "" then --only display source_row if it has content

return_t = table_style .. '\n|' .. caption ..'\n!' .. header_row1 .. '\n!' .. header_row2 .. '\n|'.. wt .. source_row .. '}'

end

return return_t

end

return p