Redigerer
Modul:Sports table/argcheck
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
local a = {} local good_args = { ['away_goals_header'] = 1, ['bonus_header'] = 1, ['class_rules'] = 1, ['draw_header'] = 1, ['drawpoints'] = 1, ['for_against_style'] = 1, ['GB_team'] = 1, ['goalpoints'] = 1, ['group_header'] = 1, ['hide_for_against_columns'] = 1, ['hide_played'] = 1, ['highest_pos'] = 1, ['legs'] = 1, ['loss_before_draw'] = 1, ['loss_before_tie'] = 1, ['losspoints'] = 1, ['lowest_pos'] = 1, ['matches_style'] = 1, ['matches_text'] = 1, ['match_col_width'] = 1, ['note_header_res'] = 1, ['only_pld_pts'] = 1, ['only_totals'] = 1, ['only_fa_totals'] = 1, ['pld_header'] = 1, ['postitle'] = 1, ['perc_first'] = 1, ['pts_first'] = 1, ['ranking_style'] = 1, ['res_col_header'] = 1, ['result_prefix'] = 1, ['rwpoints'] = 1, ['rw_header'] = 1, ['section'] = 1, ['short_style'] = 1, ['show_GB'] = 1, ['show_away_goals'] = 1, ['show_bonus_points'] = 1, ['show_class_rules'] = 1, ['show_draw'] = 1, ['show_groups'] = 1, ['show_limit'] = 1, ['show_matches'] = 1, ['show_positions'] = 1, ['show_rw'] = 1, ['show_status'] = 1, ['solid_cell'] = 1, ['sortable_table'] = 1, ['source'] = 1, ['start_date'] = 1, ['stack_footer'] = 1, ['status_order'] = 1, ['status_pos'] = 1, ['style'] = 1, ['table_header'] = 1, ['team_header'] = 1, ['team_order'] = 1, ['teamwidth'] = 1, ['template_name'] = 1, ['title'] = 1, ['transcludesection'] = 1, ['update'] = 1, ['use_goal_average'] = 1, ['use_goal_diff'] = 1, ['use_goal_percentage'] = 1, ['use_goal_ratio'] = 1, ['use_goals_scored'] = 1, ['use_point_percentage'] = 1, ['use_tie'] = 1, ['winpoints'] = 1, } local good_args_HA = { ['hdrawpoints'] = 1, ['adrawpoints'] = 1, ['hlosspoints'] = 1, ['alosspoints'] = 1, ['hwinpoints'] = 1, ['awinpoints'] = 1 } local good_args_PKOT = { ['showOTloss'] = 1, ['showOTwin'] = 1, ['showPKloss'] = 1, ['showPKwin'] = 1, ['show_tiebr'] = 1, ['PKlosspoints'] = 1, ['OTlosspoints'] = 1, ['PKwinpoints'] = 1, ['OTwinpoints'] = 1, ['PKloss_after_loss'] = 1, ['OTloss_after_loss'] = 1, ['tiebr_header'] = 1, } local ignored_args = { ['date'] = 1, ['ptsfirst'] = 1 } local col_names = { ['adjust_points'] = 1, ['away_goals'] = 1, ['draw'] = 1, ['loss'] = 1, ['gf'] = 1, ['ga'] = 1, ['group'] = 1, ['pf'] = 1, ['pa'] = 1, ['matches'] = 1, ['pos'] = 1, ['rw'] = 1, ['short'] = 1, ['startpoints'] = 1, ['status'] = 1, ['win'] = 1, } local col_names_HA = { ['draw'] = 0, ['loss'] = 0, ['gf'] = 0, ['ga'] = 0, ['pf'] = 0, ['pa'] = 0, ['rw'] = 0, ['hdraw'] = 1, ['adraw'] = 1, ['hloss'] = 1, ['aloss'] = 1, ['hwin'] = 1, ['awin'] = 1, ['hga'] = 1, ['aga'] = 1, ['hgf'] = 1, ['agf'] = 1, ['hpa'] = 1, ['apa'] = 1, ['hpf'] = 1, ['apf'] = 1, } local col_names_PKOT = { ['PKloss'] = 1, ['OTloss'] = 1, ['PKwin'] = 1, ['OTwin'] = 1, ['tiebr'] = 1 } local tracked_styles = { ['football'] = 'WDL', ['WDL'] = 'WDL', ['WL'] = 'WDL', ['WDLHA'] = 'HA', ['WDL OT'] = 'PKOT', ['WLHA'] = 'HA', ['WL OT'] = 'PKOT', ['WL PK'] = 'PKOT', ['WL OTL tiebreak'] = 'PKOT' } function a.check(targs, pargs) local teams = {} local missing_teams = {} local results = {} local missing_results = {} local orphaned_match_notes = {} local orphaned_results = {} local orphaned_names = {} local orphaned_notes = {} local ignored = {} local possibly_ignored = {} local unknown = {} local warn = {} local track = {} local mstyle = mw.ustring.gsub(targs['style'] or '', '[%s_][%s_]*', ' ') mstyle = tracked_styles[mstyle] if mstyle == nil then return warn,track end if mstyle == 'HA' then for k, v in pairs(good_args_HA) do good_args[k] = v ~= 0 and v or nil end for k, v in pairs(col_names_HA) do col_names[k] = v ~= 0 and v or nil end if targs['only_fa_totals'] then col_names['pf'] = 1 col_names['gf'] = 1 col_names['pa'] = 1 col_names['ga'] = 1 end end if mstyle == 'PKOT' then for k, v in pairs(good_args_PKOT) do good_args[k] = v ~= 0 and v or nil end for k, v in pairs(col_names_PKOT) do col_names[k] = v ~= 0 and v or nil end end -- Alternative syntax for team list if targs['team_order'] and targs['team_order'] ~= '' then local tlist = mw.text.split(targs['team_order'], '%s*[;,]%s*') for k, tname in ipairs(tlist) do if tname ~= '' then targs['team' .. k] = tname end end end -- Limited tracking if we are only showing part of the table if targs['showteam'] then local top_pos = tonumber(targs['highest_pos']) or 1 local bottom_pos = tonumber(targs['lowest_pos']) or 0 local N = top_pos - 1 while targs['team'..N+1] ~= nil and (bottom_pos < top_pos or N < bottom_pos) do N = N + 1 teams[targs['team'..N]] = 1 if teams[targs['showteam']] then return warn,track end end end -- Step 1: Generate a team and result list for k,v in pairs(targs) do if type(k) == 'string' then if k:find('^team%d%d*$') then teams[v] = 1 targs[k] = '' if targs['name_' .. v] then -- Great! targs['name_' .. v] = '' else table.insert(missing_teams, v) end if targs['note_' .. v] then targs['note_' .. v] = '' end if targs['hth_' .. v] then local multiref = 1 local hth_local_table = mw.text.split(targs['hth_' .. v], '%s*,%s*') if (#hth_local_table > 1) then for j, hth_loc in ipairs(hth_local_table) do multiref = multiref * (targs['hth_' .. hth_loc] and 1 or 0) end else multiref = 0 end if multiref > 0 then for j, hth_loc in ipairs(hth_local_table) do targs['hth_' .. hth_loc] = '' end elseif targs['hth_' .. targs['hth_' .. v]] then targs['hth_' .. targs['hth_' .. v]] = '' end targs['hth_' .. v] = '' end elseif k:find('^result%d%d*$') or k:find('^.*_result%d%d*$') then local pre = mw.ustring.gsub(k, '^(.*)result%d%d*$', '%1') results[v] = 1 targs[k] = '' if targs[pre .. 'col_' .. v] or targs[pre .. 'text_' .. v] or targs[pre .. 'note_res_' .. v] then -- Great! if targs[pre .. 'col_' .. v] then targs[pre .. 'col_' .. v] = '' end if targs[pre .. 'text_' .. v] then targs[pre .. 'text_' .. v] = '' end if targs[pre .. 'note_res_' .. v] then local multiref = 1 local note_res_local_table = mw.text.split(targs[pre .. 'note_res_' .. v], '%s*,%s*') if (#note_res_local_table > 1) then for j, note_res_loc in ipairs(note_res_local_table) do multiref = multiref * (targs[pre .. 'note_res_' .. note_res_loc] and 1 or 0) end else multiref = 0 end if multiref > 0 then for j, note_res_loc in ipairs(note_res_local_table) do targs[pre .. 'note_res_' .. note_res_loc] = '' end elseif targs[pre .. 'note_res_' .. targs[pre .. 'note_res_' .. v]] then targs[pre .. 'note_res_' .. targs[pre .. 'note_res_' .. v]] = '' end targs[pre .. 'note_res_' .. v] = '' end if targs[pre .. 'res_col_header'] then targs[pre .. 'res_col_header'] = '' end else table.insert(missing_results, v) end elseif k:find('^match[%d]*_.*_.*_note$') then local m = mw.ustring.gsub(k, '^(match[%d]*_.*_.*)_note$', '%1') targs[k] = '' if targs[m] then if targs['note_' .. v] then targs['note_' .. v] = '' end -- Great! else table.insert(orphaned_match_notes, m) end end end end local possible_missing_winpoints = 0 for k,v in pairs(targs) do if v and v~= '' then local found_arg = 0 if type(k) == 'string' then if k:find('^adjust_points_') then local p = mw.ustring.gsub(k, '^adjust_points_', '') if (tonumber(v) or 0) ~= 0 then local pdiff = (tonumber(targs['win_' .. p] or 0) or 0) + tonumber(v) if pdiff == 0 then possible_missing_winpoints = possible_missing_winpoints + 1 else possible_missing_winpoints = possible_missing_winpoints - 1 end end end if found_arg == 0 and (good_args[k] or k:find('^split[%d][%d]*$')) then -- Great! found_arg = 1 end if found_arg == 0 and k == 'showteam' then -- Great! found_arg = 1 if teams[v] ~= 1 then table.insert(missing_teams, v) end end if found_arg == 0 and (ignored_args[k] or k:find('^att_')) then found_arg = 1 table.insert(ignored, k) end if found_arg == 0 and k:find('^[A-Za-z]*_.*$') then local p = mw.ustring.gsub(k, '^([A-Za-z]*)_.*$', '%1') if col_names[p] then -- Great! found_arg = 1 end end if found_arg == 0 and k:find('^[A-Za-z]*_[A-Za-z]*_.*$') then local p = mw.ustring.gsub(k, '^([A-Za-z]*_[A-Za-z]*)_.*$', '%1') if col_names[p] then -- Great! found_arg = 1 end end if found_arg == 0 and k:find('^match[%d]*_.*_.*$') then local t1 = mw.ustring.gsub(k, '^match[%d]*_(.*)_(.*)$', '%1') local t2 = mw.ustring.gsub(k, '^match[%d]*_(.*)_(.*)$', '%2') found_arg = 1 if teams[t1] == nil or teams[t2] == nil then if teams[t1] == nil then table.insert(missing_teams, t1) end if teams[t2] == nil then table.insert(missing_teams, t2) end end end if found_arg == 0 and k:find('^result_.*_.*$') then local t1 = mw.ustring.gsub(k, '^result[%d]*_(.*)_(.*)$', '%1') local t2 = mw.ustring.gsub(k, '^result[%d]*_(.*)_(.*)$', '%2') found_arg = 1 if teams[t1] == nil or teams[t2] == nil then if teams[t1] == nil then table.insert(missing_teams, t1) end if teams[t2] == nil then table.insert(missing_teams, t2) end end end if found_arg == 0 and (k:find('^name_') or k:find('^short_')) then found_arg = 1 table.insert(orphaned_names, k) end if found_arg == 0 and (k:find('^note_') or k:find('^hth_')) then found_arg = 1 if (k == 'hth_ABC' and v == 'H2H note') then table.insert(warn, '[[Kategori:Sider som bruker sports table med ignorerte parametre|hth_ABC]]') elseif (k == 'note_ABC' and v == 'Team note') then table.insert(warn, '[[Kategori:Sider som bruker sports table med ignorerte parametre|note_ABC]]') elseif (k == 'note_res_AAA' and v == 'Result note') then table.insert(warn, '[[Kategori:Sider som bruker sports table med ignorerte parametre|note_res_AAA]]') else table.insert(orphaned_notes, k) end end if found_arg == 0 and (k:find('^col_') or k:find('^text_')) then found_arg = 1 table.insert(orphaned_results, k) end end if found_arg == 0 then if pargs[k] and pargs[k] ~= '' then if tonumber(k) then k = k .. ' = ' .. v end table.insert(possibly_ignored, k) else if tonumber(k) then k = k .. ' = ' .. v end table.insert(unknown, k) end end end end local badchar = '[^A-Za-z0-9_%(%)%- ]' for k,v in ipairs(unknown) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med ukjente parametre|' .. v .. ']]') end for k,v in ipairs(missing_teams) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med manglende lag|' .. v .. ']]') end for k,v in ipairs(missing_results) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med manglende resultater|' .. v .. ']]') end for k,v in ipairs(orphaned_results) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med foreldreløse resultater|' .. v .. ']]') end for k,v in ipairs(orphaned_names) do v = mw.ustring.gsub(v, '[^A-Za-z0-9_ ]', '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med foreldreløse navn|' .. v .. ']]') end for k,v in ipairs(orphaned_notes) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med foreldreløse noter|' .. v .. ']]') end for k,v in ipairs(orphaned_match_notes) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med foreldreløse kampnoter|' .. v .. ']]') end for k,v in ipairs(ignored) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(warn, '[[Kategori:Sider som bruker sports table med ignorerte parametre|' .. v .. ']]') end for k,v in ipairs(possibly_ignored) do v = mw.ustring.gsub(v, badchar, '?') if v == '' then v = ' ' end table.insert(track, '[[Kategori:Sider som bruker sports table med mulig ignorerte parametre|' .. v .. ']]') end if possible_missing_winpoints > 1 then table.insert(track, '[[Kategori:Sider som bruker sports table med mulig feilakte seierspoeng|' .. possible_missing_winpoints .. ']]') end return warn,track end return a
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Mal som brukes på denne siden:
Modul:Sports table/argcheck/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon