stringtranslate.com

Módulo:Tabla de deportes

-- 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