Módulo: Tabla de deportes también está pensado para crear tablas de grupos y ligas de deportes. Tenga en cuenta que este módulo se utiliza ampliamente, por lo que debe probar los posibles cambios de forma rigurosa en el entorno de pruebas y asegurarse de que exista consenso antes de implementar cambios importantes. El resto de esta documentación explica cómo configurar el módulo. Consulte las páginas de estilo individuales para obtener instrucciones de uso detalladas.
Los casos de prueba de Wikitext se encuentran en Módulo:Tabla de deportes/casos de prueba wikitexto .
El comando básico es{{#invoke:Sports table|main|style=XXX}}
El XXX
in style=XXX
debe reemplazarse por uno de los siguientes estilos disponibles:
El módulo utiliza Lua para crear las tablas. La mayor parte de la funcionalidad se obtiene del módulo principal, pero el formato de columna específico proviene de los submódulos de estilo. Los estilos existentes pueden manejar muchas opciones diferentes. En caso de que necesite opciones adicionales, podría ser útil crear un nuevo estilo. Tenga en cuenta que algunos ajustes de un estilo existente podrían brindarle la funcionalidad que necesita, en lugar de crear un estilo completamente nuevo. En caso de que cree un nuevo estilo, es posible que desee consultar el manual de referencia de Lua.
Se pueden utilizar otras opciones, por ejemplo:{{#invoke:Sports table|main|style=WL OT
|sortable_table = yes
|source=ICC
|update=July 28, 2018
Cuando hay dos tablas de deportes en la misma página, puede utilizar |section=
para proporcionar un nombre de ancla para la tabla. Las páginas que incluyen la tabla tendrán enlaces "VTE" modificados donde el enlace "ver" apunta al ancla. Las páginas que incluyen la tabla y utilizan |transcludesection=
solo mostrarán las tablas con una coincidencia |section=
y no todas las tablas.
" yes
" hace que las columnas de la tabla sean ordenables
Agrega un enlace que debe apuntar a un recurso web con la información para verificar o actualizar la tabla.
Indica la fecha en la que se actualizó por última vez la información de la tabla. Esto se debe configurar manualmente; no se modifica automáticamente cuando alguien cambia la tabla. Para una tabla final, configure " complete
".
Establecer a la izquierda o derecha para hacer flotar la tabla hacia la izquierda o hacia la derecha en la página
Para agregar una referencia al título y suprimir la necesidad de una fuente al pie de la tabla
-- Módulo para construir tablas de posiciones en Deportes -- Ver documentación para detalles require ( 'strict' ) local p = {} -- Función principal function p . main ( frame ) -- Declarar variables locales local getArgs = require ( 'Module:Arguments' ). getArgs local Args = getArgs ( frame , { parentFirst = true }) local ii_start , ii_end , N_rows_res = 0 local text_field_result local notes_exist = false local t = {} local t_footer = {} local t_return = {} local team_list = {} local jj , jjj local table_anchor = mw . ustring . gsub ( Args [ 'section' ] y 'sports-table-' .. Args [ 'section' ] o '' , ' ' , '_' ) - Salir antes si estamos usando la transclusión de sección para una sección diferente local tsection = frame : getParent (). args [ 'transcludesection' ] o frame : getParent (). args [ 'section' ] o '' local bsection = frame . args [ 'section' ] o '' si ( tsection ~= '' y bsection ~= '' ) entonces si ( tsection ~= bsection ) entonces devuelve '' fin fin local templatestyles = frame :extensionTag { nombre = 'templatestyles' , args = { src = 'Módulo:Tabla de deportes/styles.css' } } - Editar enlaces si se solicita local baselink = frame : getParent (): getTitle () if baselink == 'Módulo:Excerpt' then baselink = '' end if mw . title . getCurrentTitle (). fullText == baselink then baselink = '' end local template_name = ( baselink ~= '' and ( ':' .. baselink .. ( table_anchor ~= '' and '#' .. table_anchor or '' ))) or '' - Obtener el punto de inicio personalizado para la tabla (la mayoría comenzará de forma predeterminada en 1) local top_pos = tonumber ( Args [ 'highest_pos' ]) or 1 - Obtener el punto final personalizado para la tabla (sin restricciones si bottom_pos es < top_pos) local bottom_pos = tonumber ( Args [ 'lowest_pos' ]) or 0 local N_teams = top_pos - 1 - Predeterminado a 0 al inicio, pero se necesita un número mayor para omitir ciertas entradas - Cargar módulos local yesno = require ( 'Module:Yesno' ) - Cargar estilo y (sub) módulos local style_def = Args [ 'style' ] or 'WDL' - Históricamente, 'football' existe como estilo, esto ahora se reenvía a WDL si style_def == 'football' entonces style_def = 'WDL' fin local p_style = require ( 'Module:Sports table/' .. style_def ) local p_sub = require ( 'Module:Sports table/sub' ) - Valor aleatorio utilizado para matemáticas de unicidad.semilla aleatoria ( os.clock () * 10 ^ 8 ) rand_val local = math.random () -- Declarar esquema de color local result_col = {} result_col = { verde1 = '#BBF3BB' , verde2 = '#CCF9CC' , verde3 = '#DDFCDD' , verde4 = '#EEFFEE' , azul1 = '#BBF3FF' , azul2 = '#CCF9FF' , azul3 = '#DDFCFF' , azul4 = '#EEFFFF' , amarillo1 = '#FFFFBB' , amarillo2 = '#FFFFCC' , amarillo3 = '#FFFFDD' , amarillo4 = '#FFFFEE' , rojo1 = '#FFBBBB' , rojo2 = '#FFCCCC' , rojo3 = '#FFDDDD' , rojo4 = '#FFEEEE' , negro1 = '#BBBBBB' , negro2 = '#CCCCCC' , negro3 = '#DDDDDD' , black4 = '#EEEEEE' , orange1 = '#FEDCBA' , orange2 = '#FEEAD5' , white1 = 'inherit' ,[ '' ] = 'inherit' } -- Mostrar todas las estadísticas en la tabla o solo los partidos jugados y los puntos local full_table = true local hide_results = yesno ( Args [ 'hide_results' ] o 'no' ) local hide_footer = yesno ( Args [ 'hide_footer' ] o 'no' ) local pld_pts_val = string.inferior ( Args [ 'only_pld_pts' ] o 'no' ) local show_class_rules = yesno ( Args [ 'show_class_rules' ] o 'yes' ) y true o false -- Verdadero si par no existe, falso en caso contrario if yesno ( pld_pts_val ) then full_table = false elseif pld_pts_val == 'no_hide_class_rules' then full_table = true show_class_rules = false end -- Declarar encabezado de columna de resultados local results_header = {} results_header = { Q = 'Calificación' , QR = 'Calificación o descenso' , P = 'Promoción' , PQR = 'Promoción, calificación o descenso' , PR = 'Promoción o descenso' , PQ = 'Promoción o calificación' , R = 'Descenso' } local results_defined = false -- Verificar si esto sería necesario -- Posible prefijo para campos de resultados local respre = ( Args [ 'result_prefix' ] or '' ) .. '_' respre = ( respre == '_' ) and '' or respre -- Ahora definir línea para el encabezado de columna (ya sea opcional o personalizado) local local_res_header = results_header [ Args [ respre .. 'res_col_header' ]] o Args [ respre .. 'res_col_header' ] o '' - Verificar si incluye una nota local res_head_note = Args [ 'note_header_res' ] local res_head_note_text = '' si full_table y res_head_note entonces notes_exist = true res_head_note_text = frame : expandTemplate { title = 'efn' , args = { group = 'lower-alpha' ,res_nota_principal } } fin local results_header_txt = '!scope="col" |' .. local_res_header .. res_head_note_text .. ' \n ' -- Obtener la opción de estado local t_status = p_style .status ( Args ) -- Sintaxis alternativa para la lista de equipos si Args [ 'team_order' ] y Args [ 'team_order' ] ~= '' entonces local team_order_offset = ( tonumber ( Args [ 'team_order_start' ] ) o 1 ) - 1 local tlist = mw .text . split ( Args [ 'team_order' ], '%s*[;,]%s*' ) for k , tname in ipairs ( tlist ) do if tname ~= '' then Args [ 'team' .. ( k + team_order_offset )] = tname end end end -- Leer el número de equipos consecutivos (ignorar las entradas después de saltear un lugar) while Args [ 'team' .. N_teams + 1 ] ~= nil and ( bottom_pos < top_pos or N_teams < bottom_pos ) do N_teams = N_teams + 1 -- Agregarlo disimuladamente dos veces al parámetro team_list, una para la clasificación real, la segunda para la búsqueda de posición en subtablas . Esto es posible porque Lua permite tanto números como cadenas como índices. team_list [ N_teams ] = Args [ 'team' .. N_teams ] -- la entrada i^th es el equipo X team_list [ Args [ 'team' .. N_teams ]] = N_teams -- la entrada del equipo X es la posición i end -- Totales opcionales total_row_name local = 'TOTAL_TABLA_DEPORTIVA' si yesno ( Args [ 'mostrar_totales' ] o 'no' ) entonces N_equipos = N_equipos + 1 Args [ 'equipo' .. N_equipos ] = nombre_fila_total Args [ 'nombre_' .. nombre_fila_total ] = 'Total' Args [ 'resultado' .. N_equipos ] = nombre_fila_total Args [ 'col_' .. nombre_fila_total ] = '#eee' lista_equipos [ N_equipos ] = Args [ 'equipo' .. N_equipos ] lista_equipos [ Args [ 'equipo' .. N_equipos ]] = N_equipos fin -- Mostrar posición local position_col = yesno ( Args [ 'mostrar_posiciones' ] o 'yes' ) y verdadero o falso -- Mostrar grupos o anotar local group_col = yesno ( Args [ 'show_groups' ] o 'no' ) y verdadero o falso -- Mostrar match_table o no match_table local = yesno ( Args [ 'show_matches' ] o 'no' ) y verdadero o falso p_matches local = match_table y ( style_def == 'Chess' y require ( 'Módulo:Resultados deportivos/' .. style_def ) o require ( 'Módulo:Resultados deportivos' )) - Etiqueta de columna de posición personalizada o nota local pos_label = Args [ 'postitle' ] o '<abbr title="Position">Pos</abbr>' si position_col == false entonces pos_label = nil fin - Mostrar estado o no local show_status = yesno ( Args [ 'show_status' ] o 'yes' ) y verdadero o falso - Obtener el texto del botón VTE (pero solo para texto no vacío) local VTE_text = '' if ( template_name ~= '' ) then VTE_text = require ( 'Module:Navbar' ). _navbar ({ template_name , mini = 1 , style = 'float:right' , brackets = 1 }) - eliminar la siguiente parte if https://en.wikipedia.org/w/index.php?oldid=832717047#Sortable_link_disables_navbar_links? - siempre se arregla if yesno ( Args [ 'sortable_table' ] o 'no' ) then VTE_text = mw . ustring . gsub ( VTE_text , '<%/?abbr[^<>]*>' , ' ' ) end end -- Agrega la fuente al título si se especifica y es posible title_source local = false if Args [ 'title' ] and Args [ 'title_source' ] then Args [ 'title' ] = Args [ 'title' ] .. Args [ 'title_source' ] title_source = true elseif Args [ 'table_header' ] and Args [ 'table_header_source' ] then Args [ 'table_header' ] = Args [ 'table_header' ] .. Args [ 'table_header_source' ] title_source = true end -- Agrega un ancla de tabla if table_anchor ~= '' then table.insert ( t , '<span class="anchor" id="' ..ancla_de_tabla .. '"></span> \n ' ) fin - Escribir encabezados de columna t_return = p_style . header ( t , Args , p_sub , pos_label , group_col , VTE_text , full_table , results_header_txt ) if match_table then - Agregar encabezado de columna vacío t_return . count = t_return . count + 1 table. insert ( t_return . tab_text , '! scope="row" class="unsortable" style="background-color:white;border-top:white;border-bottom:white;line-width:3pt;"| \n ' ) - Agregar resto del encabezado t_return = p_matches . header ( t_return , Args , p_sub , N_teams , team_list , tonumber ( Args [ 'legs' ]) or 1 ) fin t = t_return . tab_text local N_cols = t_return . count -- Determinar qué entradas van en la tabla -- Averiguar qué equipo mostrar (si hay alguno) local ii_show = team_list [ Args [ 'showteam' ] o nil ] -- nulo si no existe -- Posiciones inicial y final para mostrar local n_to_show = tonumber ( Args [ 'show_limit' ]) o N_teams -- Verificar "valor legal", si no es legal (o no se ha declarado), mostrar todos local check_n = (( n_to_show >= ( N_teams - top_pos + 1 )) o ( n_to_show <= 1 ) o ( n_to_show ~= math.floor ( n_to_show ))) -- También verificar si hay un ii_show válido si check_n o ( no ii_show ) entonces ii_start = top_pos ii_end = N_teams else -- Es un entero propio entre top_pos+1 y N_teams-1 -- Si está en el medio muestra el mismo número arriba y abajo -- Si está arriba o abajo, muestra el número exacto -- Cuántos mostrar en el lateral local n_show_side = math.floor ( n_to_show / 2 ) if ( ii_show - top_pos + 1 ) <= n_show_side then -- Equipo superior ii_start = top_pos ii_end = top_pos + n_to_show - 1 elseif ii_show >= ( N_teams + 1 - n_show_side ) then -- Equipo inferior ii_start = N_teams + 1 - n_to_show ii_end = N_teams else -- Caso normal ii_start = ii_show - n_show_side ii_end = ii_show + n_show_side end end -- Para la columna de resultados local new_res_ii = ii_start -- Verificar previamente la existencia de la columna if not hide_results then for ii = ii_start , ii_end do if Args [ respre .. 'result' .. ii ] and Args [ respre .. 'text_' .. Args [ respre .. 'result' .. ii ]] then results_defined = true end end end -- Eliminar el encabezado de resultados si no se utiliza if full_table and not results_defined then -- Primero obtenerlo como una cadena, luego usar string replace para reemplazar ese encabezado por una cadena vacía local t_str = tostring ( table.concat ( t )) t_str = mw . ustring . gsub ( t_str , results_header_txt , '' ) N_cols = N_cols - 1 -- En realidad hay una columna menos t = {} table.insert ( t , t_str ) end -- Escribe filas local team_name , team_code_ii , team_code_jj , pos_num , group_txt , note_local local note_string , note_local , note_local_num , note_id local note_id_list = {} local hth_id_list = {} for ii = ii_start , ii_end do -- Primero obtiene el código team_code_ii = team_list [ ii ] -- Ahora lee los valores pos_num = Args [ 'pos_' .. team_code_ii ] o ii group_txt = Args [ 'group_' .. team_code_ii ] o ' ' team_name = Args [ 'name_' .. team_code_ii ] o team_code_ii note_local = Args [ 'note_' .. team_code_ii ] o nil - ¿Necesita una etiqueta de promoción/calificación/descenso? local result_local = Args [ respre .. 'result' .. ii ] o nil local bg_col = nil - Obtener el color de fondo local si result_local entonces bg_col = result_col [ Args [ respre .. 'col_' .. result_local ]] o Args [ respre .. 'col_' .. result_local ] o 'heredarse' si bg_col == 'heredarse' entonces bg_col = bg_col .. '; color: heredar' fin bg_col = 'color-de-fondo:' .. bg_col .. ';' - Fin de etiqueta de estilo completo si no es bg_col entonces bg_col = 'background-color:transparent; color: heritage;' fin - Se convierte en predeterminado si no está definido - Poner en negrita esta línea o no es local ii_fw = ii == ii_show y 'font-weight: bold;' o 'font-weight: normal;' si yesno ( Args [ 'show_totals' ] o 'no' ) y team_code_ii == total_row_name entonces ii_fw = 'font-weight: bold;' end -- Verifica si hay una nota o no, si es así prepara el texto para ella if note_local and full_table then -- Establece la verificación global para notas como verdadera notes_exist = true -- Ahora hay 3 opciones para las notas -- 1) Es una nota completa -- 2) Es una referencia a otra nota (es decir, es solo un código de equipo; p. ej. note_AAA=Text, note_BBB=AAA) en la que la nota para BBB debe vincularse a la misma nota al pie que AAA, con -- 2a) La otra nota vinculada existe en la parte de la tabla que se muestra -- 2b) La parte de la nota no existe en la parte de la tabla que se muestra if not Args [ 'note_' .. note_local ] then -- Opción 1 -- Ahora define el identificador para esto note_id = '"table_note_' .. team_code_ii .. rand_val .. '"' -- Agrega un final aleatorio para una ID única si hay más tablas presentes en el artículo (que de lo contrario podrían compartir una ID) note_id_list [ team_code_ii ] = note_id -- Llamar a la plantilla de referencia note_string = frame : expandTemplate { title = 'efn' , args = { group = 'lower-alpha' , name = note_id , note_local } } else -- Opción 2 -- Es la opción 2a en cualquiera de los dos si la nota principal está dentro de la subtabla -- u otra referencia a esa nota está dentro de la subtabla -- Básicamente cuando se ha definido, o el enlace principal estará en la tabla note_local_num = team_list [ note_local ] si note_id_list [ note_local ] o (( note_local_num >= ii_start ) y ( note_local_num <= ii_end )) entonces -- Opción 2a note_id = '"table_note_' .. note_local .. rand_val .. '"' note_string = frame : extensionTag { name = 'ref' , args = { group = 'lower-alpha' , name = note_id } } else -- Opción 2b -- Ahora defina el identificador para este note_id = '"table_note_' .. note_local .. rand_val .. '"' -- Agregar final aleatorio para ID único note_id_list [ note_local ] = note_id -- Llamar plantilla refn note_string = frame : expandTemplate { title = 'efn' , args = { group = 'lower-alpha' , name = note_id , Args [ 'note_' .. note_local ]} } fin fin de lo contrario note_string = '' ; fin - Insertar estado cuando sea necesario local status_string = '' local status_local = show_status y Args [ respre .. 'status_' .. team_code_ii ] o nil local status_let_first = true local curr_letter - Solo si está definido if status_local then - Tómelo letra por letra para jjj = 1 , mw . ustring . len ( status_local ) hacer curr_letter = mw . ustring .superior ( mw . ustring . sub ( status_local , jjj , jjj )) - Verificar si existe if t_status . code [ curr_letter ] then - Dependiendo de si es la primera letra de o no if status_let_first then status_string = curr_letter t_status . called [ curr_letter ] = true status_let_first = false else status_string = status_string .. ', ' .. curr_letter t_status . called [ curr_letter ] = true end end end - Solo agregar corchetes/guiones y negrita si existe if not status_let_first then if t_status . position == 'before' then status_string = '<span style="font-weight:bold">' .. string.lower ( status_string ) .. ' –</span> ' else status_string = ' <span style="font-weight:bold">(' .. status_string .. ')</span>' end end end -- Ahora construya las filas if yesno ( Args [ 'show_totals' ] or 'no' ) and team_code_ii == total_row_name then table.insert ( t , '|- class="sortbottom" \n ' ) -- Nueva fila else table.insert ( t , '|- \n ' ) -- Nueva fila end if position_col then table.insert ( t , '| style="text-align: center;' .. ii_fw .. bg_col .. '"| ' .. pos_num ..' \n ' ) -- Número de posición final si full_table y group_col entonces table.insert ( t , '| style="' .. ii_fw .. bg_col .. '" |' .. group_txt .. ' \n ' ) -- Número/nombre del grupo end -- Construye el orden de la cadena del equipo según la posición del estado local team_string if t_status . position == 'before' then team_string = status_string .. team_name .. note_string else team_string = team_name .. note_string .. status_string end table.insert ( t , '!scope="row" style="text-align: left; white-space:nowrap;' .. ii_fw .. bg_col .. '"| ' .. team_string .. ' \n ' ) -- Equipo (con posible nota) -- Llamada a la subfunción t_return = p_style . row ( frame , t , Args , p_sub , notes_exist , hth_id_list , full_table , rand_val , team_list , team_code_ii , ii_start , ii_end , ii_fw , bg_col , N_teams , ii , ii_show ) t = t_return.t notes_exist = t_return.notes_exist hth_id_list = t_return.hth_id_list - Ahora, verifique lo que se debe agregar dentro de la columna de resultados if full_table then local res_jjj if ii == new_res_ii then - Primero , verifique cuántas filas necesita para esto N_rows_res = 1 jjj = ii + 1 result_local = Args [ respre .. ' result' .. ii ] or ' ' local cont_loop = true while ( jjj <= ii_end ) y cont_loop hacen si Args [ 'split' .. tostring ( jjj - 1 )] entonces cont_loop = falso new_res_ii = jjj de lo contrario res_jjj = Args [ respre .. 'result' .. jjj ] o '' si result_local == res_jjj entonces N_rows_res = N_rows_res + 1 de lo contrario cont_loop = falso new_res_ii = jjj fin fin jjj = jjj + 1 fin -- Ahora crea este campo (reutiliza ii_fw y bg_col) -- Negrita (si está en el rango) o no si ii_show y ( ii_show >= ii ) y ( ii_show <= ( ii + N_rows_res - 1 )) entonces ii_fw = 'font-weight: bold;' else ii_fw = 'font-weight: normal;' end -- Obtener el color de fondo bg_col = nil if Args [ respre .. 'result' .. ii ] then bg_col = result_col [ Args [ respre .. 'col_' .. result_local ]] or Args [ respre .. 'col_' .. result_local ] or 'inherit' if bg_col == 'inherit' then bg_col = bg_col .. '; color: heritage' end bg_col = 'background-color:' .. bg_col .. ';' -- Etiqueta de estilo completa end if not bg_col then bg_col = 'background-color:transparent; color: heritage;' end -- Se convierte en predeterminado si no está definido -- Verificar notas local note_res_string , note_ref , note_text = '' , '' , '' si Args [ 'note_res_' .. result_local ] entonces notes_exist = verdadero local note_res_local = Args [ 'note_res_' .. result_local ] - Dividir note_res_local en una tabla si todas las entradas son válidas local multiref = 1 local note_res_local_table = mw . text . split ( note_res_local , '%s*,%s*' ) if ( # note_res_local_table > 1 ) then for k , note_res_loc in ipairs ( note_res_local_table ) do multiref = multiref * ( Args [ 'note_res_' .. note_res_loc ] and 1 or 0 ) end else multiref = 0 end -- La división falló, por lo que se crea una tabla de entrada única con hth_local dentro if multiref < 1 then note_res_local_table = { note_res_local } end for k , note_res_local in ipairs ( note_res_local_table ) do if not Args [ 'note_res_' .. note_res_local ] then -- No apunta a otro resultado note note_ref = respre .. 'res_' .. result_local note_id = '"table_note_res_' .. result_local .. rand_val .. '"' -- Identificador note_text = note_res_local else -- Apunta a otro resultado note note_ref = respre .. 'res_' .. note_res_local note_id = '"table_note_res_' .. note_res_local .. rand_val .. '"' -- Identificador note_text = Args [ 'note_res_' .. note_res_local ] fin -- Verificar si ya está impreso if not note_id_list [ note_ref ] then -- Imprimirlo note_id_list [ note_ref ] = note_id note_res_string = note_res_string .. frame : expandTemplate { title = 'efn' , args = { group = 'lower-alpha' , name = note_id , note_text } } else -- Hacer referencia a él note_res_string = note_res_string .. frame : extensionTag { name = 'ref' , args = { group = 'lower-alpha' , name = note_id } } fin fin fin -- Obtener el texto local text_result = Args [ respre .. 'text_' .. result_local ] o '' if text_result : match ( 'fbmulticomp' ) then ii_fw = 'padding:0;' .. ii_fw if text_result : match ( 'fbmulticompefn' ) then notes_exist = true end end text_field_result = '| style="' .. ii_fw .. bg_col .. '" rowspan="' .. tostring ( N_rows_res ) .. '" |' .. text_result .. note_res_string .. ' \n ' -- Ver si es necesario (solo cuando está en blanco para todas las entradas) if results_defined then table.insert ( t ,text_field_result ) end end end - Insertar fila coincidente si es necesario si match_table entonces piernas locales = tonumber ( Args [ 'piernas' ]) o 1 -- Agregar celda vacía table.insert ( t , '| style="background-color:white;border-top:white;border-bottom:white;"| \n ' ) -- Ahora incluya una nota para que coincida con los resultados si es necesario para jj = top_pos , N_teams hacer team_code_jj = team_list [ jj ] si ii == jj entonces -- Nada más para l = 1 , piernas hacer local m = ( piernas == 1 ) y 'match_' o 'match' .. l .. '_' local match_note = Args [ m .. team_code_ii .. '_' .. team_code_jj .. '_note' ] si match_note entonces notes_exist = true -- Solo cuando existe -- Primero verifique la existencia de la referencia para la nota si no ( Args [ 'note_' .. match_note ] o Args [ m .. match_note .. '_note' ]) entonces -- Es la entrada note_id = '"table_note_' .. team_code_ii .. '_' .. team_code_jj .. rand_val .. '"' -- Agregar final aleatorio para ID único si hay más tablas presentes en el artículo (que de otra manera podrían compartir una ID) note_id_list [ team_code_ii .. '_' .. team_code_jj ] = note_id note_string = frame : expandTemplate { title = 'efn' , args = { group = 'lower-alpha' , name = note_id ,match_note } } else -- Verificar existencia en otro lugar note_local_num = team_list [ match_note ] o ii_end + 1 si note_id_list [ match_note ] o (( note_local_num >= ii_start ) y ( note_local_num <= ii_end )) entonces -- Existe note_id = '"table_note_' .. match_note .. rand_val .. '"' -- Identificador note_string = frame : extensionTag { name = 'ref' , args = { group = 'lower-alpha' , name = note_id } } else -- Ahora define el identificador para esto note_id = '"table_note_' .. match_note .. rand_val .. '"' -- Agrega un final aleatorio para un ID único note_id_list [ match_note ] = note_id -- Llama a la plantilla refn note_string = frame : expandTemplate { title = 'efn' , args = { group = 'lower-alpha' , name = note_id , Args [ 'note_' .. match_note ]} } end end -- Ahora, agregue esto a la cadena de resultados del partido Args [ m .. team_code_ii .. '_' .. team_code_jj ] = ( Args [ m .. team_code_ii .. '_' .. team_code_jj ] o '' ) .. note_string end end end end -- Agregue el resto de la fila del partido t = p_matches . row ( t , Args , N_teams , team_list , ii , ii_show , legs ) end -- Ahora, si es necesario, inserte una división (línea sólida para indicar división en la clasificación, pero solo cuando no esté en la última posición mostrada) si Args [ 'split' .. ii ] y ( ii < ii_end ) entonces -- Tamaño base en N_cols (necesita 2*N_cols |) table.insert ( t , '|- style="background-color:' .. result_col [ 'black1' ] .. '; line-height:3pt;" \n ' ) table.insert ( t , string.rep ( '|' , 2 * N_cols ) .. ' \n ' ) end end -- Cerrar tabla table.insert ( t , '|}' ) -- Obtener información para el pie de página local update = Args [ 'update' ] o 'unknown' local start_date = Args [ 'start_date' ] o 'unknown' local source = Args [ 'source' ] o ( title_source == true y '' ) o frame : expandTemplate { title = 'cita necesaria' , args = { reason = 'No source parameterdefined' , date = os.date ( '%B %Y' ) } } local class_rules = Args [ 'class_rules' ] o nil -- Crear texto de pie de página -- Actualización de fecha local matches_text = Args [ 'matches_text' ] o 'match(es)' if string.lower ( update ) == 'complete' or hide_footer then -- No hacer nada másif update == '' then -- Tabla de parámetros vacía .insertar ( t_footer , 'Actualizado a ' .. matches_text .. ' jugado en desconocido. ' ) elseif string.lower ( update ) == 'future' then -- Fecha de inicio futura table.insert ( t_footer , 'Se reproducirá el primer ' .. matches_text .. ': ' .. start_date .. '. ' ) else table.insert ( t_footer , 'Actualizado a ' .. matches_text .. ' jugado el ' .. update .. '. ' ) end -- Pie de pila o no local footer_break = yesno ( Args [ 'stack_footer' ] o 'no' ) and true o false -- Variable para salto de línea local stack_string = '<br>' if footer_break and ( not ( string.lower ( update ) == 'complete' ) ) andnot hide_footer then table.insert ( t_footer , stack_string ) end if source ~= ' ' andnot hide_footer then table.insert ( t_footer , 'Fuente: ' .. source ) end if class_rules and full_table and show_class_rules and not hide_footer then if ( # t_footer > 0 ) then table.insert ( t_footer , '<br>' ) end table.insert ( t_footer , 'Reglas para la clasificación: ' .. class_rules ) end -- Ahora, para el estado nombrado, local status_exist = false local status_string = '' local curr_letter for jjj = 1 , mw .ustring .len ( t_status . letras ) hacer curr_letra = mw . ustring . upper ( mw . ustring . sub ( t_status . letras , jjj , jjj )) si t_status . llamado [ curr_letra ] entonces si ( footer_break y status_exist ) entonces status_string = status_string .. stack_string fin si t_status . position == 'before' entonces status_string = status_string .. '<span style="font-weight:bold">' .. string.lower ( curr_letra ) .. ' –</span> ' .. t_status . code [ curr_letra ] .. '; ' else status_string = status_string .. ' < span style="font-weight:bold">(' .. curr_letter .. ' ) </span> ' .. t_status . code [ curr_letter ] .. '; ' end status_exist = true end end -- Ahora, si contiene entradas, se debe eliminar el '; ' if status_exist and not hide_footer then if ( # t_footer > 0 ) then table.insert ( t_footer , ' <br> ' ) end status_string = mw.ustring.sub ( status_string , 1 , mw.ustring.len ( status_string ) - 2 ) table.insert ( t_footer ,status_string ) fin - Agregar notas (si corresponde) si notes_exist entonces si ( # t_footer > 0 ) entonces table.insert ( t_footer , '<br>' ) end table.insert ( t_footer , 'Notas:' ) -- Como texto de tamaño de lista de referencias t_footer = '<div class="sports-table-notes">' .. table.concat ( t_footer ) .. '</div>' t_footer = t_footer .. frame : expandTemplate { title = 'notelist' , args = { group = 'lower-alpha' } } else -- Como texto de tamaño de lista de referencias t_footer = '<div class="sports-table-notes">' .. table.concat ( t_footer ) .. '</div>' end -- Agregar pie de página a la tabla de texto principal table.insert ( t , t_footer ) -- Reescribir enlaces de anclaje para k = 1 , # t do if t [ k ]: match ( '%[%[#[^%[%]]*%|' ) entonces t [ k ] = mw . ustring . gsub ( t [ k ], '(%[%[)(#[^%[%]]*%|)' , '%1' .. baselink .. '%2' ) fin fin -- Generar seguimiento si no Args [ 'notracking' ] entonces local getTracking = require ( 'Module:Sports table/argcheck' ). check local advertencia_categorías , seguimiento_categorías = getTracking ( Args , frame : getParent (). args ) si # advertencia_categorías > 0 entonces si frame : preprocess ( "{{REVISIONID}}" ) == "" entonces para k = 1 ,# advertencia_categorías hacer advertencia_categorías [ k ] = mw . ustring . gsub ( advertencia_categorías [ k ], '^%[%[Categoría:Páginas que usan la tabla de deportes con (.*)|(.*)%]%]$' , '<div style="color:red">Advertencia: %1 = %2</div>' ) fin fin fin para k = 1 , # advertencia_categorías hacer tabla.insert ( t , advertencia_categorías [ k ]) fin para k = 1 , # seguimiento_categorías hacer tabla.insert ( t , seguimiento_categorías [ k ]) fin si ( Args [ 'showteam' ] == nil ) entonces local getWarnings = require ( 'Módulo:Tabla de deportes/totalscheck' ). comprobar total_warnings = getWarnings ( Args , team_list , ii_start , ii_end ) si # total_warnings > 0 entonces si frame : preprocess ( "{{REVISIONID}}" ) == "" entonces para k = 1 , # total_warnings hacer tabla.insert ( t , '<div style="color:green">Posible problema: ' .. total_warnings [ k ] .. '</div>' ) fin fin fin fin de lo contrario tabla.insert ( t , '[[Categoría:Páginas que usan la tabla de deportes sin seguimiento]]' ) fin si Args [ 'float' ] entonces devolver frame : expandTemplate { título = 'stack begin' , args = { clear = 'true' , margin = '1' ,flotante = Args [ 'flotante' ]} } .. estilosdeplantilla .. ' \n ' .. tabla.concat ( t ) .. marco : expandTemplate { título = 'fin de la pila' } fin de retorno estilosdeplantilla .. ' \n ' .. tabla.concat ( t ) fin de retorno p