stringtranslate.com

Módulo:Cuadro de información

local  p  =  {} argumentos locales = {} argumentos_originales locales = {} raíz local categorías_fila_vacías locales = {  } patrón_categoría_en_fila_vacía_local   = '  % [   % [  % s  * [   Cc ] [Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' tiene_filas locales = falso listas locales = { lista_plana_t = { patrones = { '^lista_plana$' , '%slista_plana$' , '^lista_plana%s' , '%slista_plana%s' }, encontrado = falso , estilos = 'Lista_plana/styles.css' }, lista_ht = { patrones = { '^hlist$' , '%shlist$' , '^hlist%s' , '%shlist%s' }, encontrado = falso , estilos = 'Hlist/styles.css ' } } función_local tiene_lista_clase ( args_to_check ) para _ , lista en pares ( listas ) hacer si no lista . encontrado entonces para _ , arg en pares ( args_to_check ) hacer para _ , patrón en ipairs ( lista . patrones ) hacer si mw . ustring . encontrar ( arg o '' , patrón ) entonces lista . encontrado = verdadero romper fin fin si lista . encontrado entonces romper fin fin fin fin fin función local fixChildBoxes ( sval , tt ) función local notempty ( s ) devolver s y s : coincidir                                                                   (  '%S'  )  fin si notempty ( sval ) entonces marcador local = '<span class=special_infobox_marker>' local s = sval -- comienza a mover estilos de plantilla y categorías dentro de las filas de la tabla local slast = '' mientras slast ~= s hacer slast = s s = mw . ustring . gsub ( s , '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])' , '%2%1' ) s = mw . ustring . gsub ( s , '(</[Tt][Rr]%s*>%s*)( \127 [^ \127 ]*UNIQ%-%-templatestyles%-%x+%-QINU[^ \127 ]* \127 )' , '%2%1' ) end -- termina de mover estilos de plantilla y categorías dentro de las filas de la tabla s = mw . ustring . gsub ( s , '(<%s*[Tt][Rr])' , marcador .. '%1' ) s = mw . ustring . gsub ( s , '(</[Tt][Rr]%s*>)' , '%1' .. marcador ) if s : match ( marcador ) then s = mw . ustring . gsub ( s , marcador .. '%s*' .. marcador , '' ) s = mw . ustring . gsub ( s , '([ \r\n ]|-[^ \r\n ]*[ \r\n ])%s*' .. marcador , '%1' ) s = mw . ustring . gsub ( s , marcador .. '%s*([ \r\n ]|-)' ,'%1' ) s = mw . ustring                                                             . gsub ( s ,  '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)'  ..  marcador ,  '%1' ) s = mw . ustring . gsub ( s , '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marcador , '%1' ) s = mw . ustring . gsub ( s , '^(%{|[^ \r\n ]*[ \r\n ]%s*)' .. marcador , '%1' ) s = mw . ustring . gsub ( s , '([ \r\n ]%{|[^ \r\n ]*[ \r\n ]%s*)' .. marcador , '%1' ) s = mw . ustring . gsub ( s , marcador .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)' , '%1' ) s = mw . ustring . gsub ( s , marcador .. '(%s* \n |%})' , '%1' ) fin si s : match ( marcador ) entonces subceldas locales = mw . texto . split ( s , marcador ) s = '' para k = 1 , # subceldas hacer si k == 1 entonces s = s .. subceldas [ k ] .. '</' .. tt .. '></tr>' elseif k == # subceldas entonces fila local style = ' style="display:ninguno"' si no está vacío ( subceldas [ k ]) entonces estilo_fila = '' fin s = s .. '<tr' ..                                                                           rowstyle  .. '><'  ..  tt  ..  ' colspan=2> \n '  .. subcells [ k ] elseif notempty ( subcells [ k ]) then if ( k % 2 ) == 0 then s = s .. subcells [ k ] else s = s .. '<tr><' .. tt .. ' colspan=2> \n ' .. subcells [ k ] .. '</' .. tt .. '></tr>' end end end end -- las siguientes dos líneas agregan una nueva línea al final de las listas para el analizador PHP -- [[Special:Diff/849054481]] -- eliminar cuando [[:phab:T191516]] es fijo u OBE s = mw . ustring . gsub ( s , '([ \r\n ][%*#;:][^ \r\n ]*)$' , '%1 \n ' ) s = mw . ustring . gsub ( s , '^([%*#;:][^ \r\n ]*)$' , '%1 \n ' ) s = mw . ustring . gsub ( s , '^([%*#;:])' , ' \n %1' ) s = mw . ustring . gsub ( s , '^(%{%|)' , ' \n %1' ) return s else return sval end end -- Limpia las tablas vacías función local cleanInfobox () root = tostring ( root ) si tiene_filas == falso entonces root = mw . ustring . gsub ( root ,'<table[^<>]*>%s*</table>' , '' ) fin                                                         end -- Devuelve la unión de los valores de dos tablas, como una secuencia. local function union ( t1 , t2 ) local vals = {} for k , v in pairs ( t1 ) do vals [ v ] = true end for k , v in pairs ( t2 ) do vals [ v ] = true end local ret = {} for k , v in pairs ( vals ) do table.insert ( ret , k ) end return ret end -- Devuelve una tabla que contiene los números de los argumentos que existen -- para el prefijo especificado. Por ejemplo, si el prefijo fuera 'data', y -- existen 'data1', 'data2' y 'data5', devolvería {1, 2, 5}. función local getArgNums ( prefijo ) números locales = {} para k , v en pares ( args ) hacer número local = tostring ( k ): match ( '^' ... prefijo ... '([1-9]%d*)$' ) si número entonces tabla.insert ( nums , tonumber ( num )) fin fin tabla.sort ( nums ) devolver números fin -- Agrega una fila al cuadro de información, con una celda de encabezado -- o una combinación de etiqueta/celda de datos . función local addRow ( rowArgs ) si filaArgs.encabezado y filaArgs.encabezado ~ = ' _BLANK_ ' entonces tiene_filas = verdadero tiene_lista_clase ( { filaArgs.filaclass , filaArgs.clase , args                                                                  . headerclass  }) raíz : etiqueta ( 'tr' ) : addClass ( rowArgs . rowclass ) : cssText ( rowArgs . rowstyle ) : etiqueta ( 'th' ) : attr ( 'colspan' , '2' ) : addClass ( 'infobox-header' ) : addClass ( rowArgs . class ) : addClass ( args . headerclass ) -- @deprecated siguiente; objetivo. infobox-<nombre>. infobox-header : cssText ( args . headerstyle ) : cssText ( rowArgs . rowcellstyle ) : wikitext ( fixChildBoxes ( rowArgs . header , 'th' )) si rowArgs . data entonces raíz : wikitext ( '[[Categoría:Páginas que usan plantillas de infobox con celdas de datos ignoradas]]' ) fin de lo contrario si rowArgs . datos y rowArgs . datos : gsub ( categoria_en_patron_fila_vacia , '' ): match ( '^%S' ) entonces tiene_filas = true tiene_clase_lista ({ rowArgs . rowclass , rowArgs . class }) fila local = raíz : etiqueta ( 'tr' ) fila : addClass ( rowArgs . rowclass ) fila : cssText ( rowArgs . rowstyle ) si rowArgs . etiqueta entonces fila : etiqueta ( 'th' ) : attr ( 'alcance' , 'fila' ) :addClass ( 'etiqueta del cuadro de información'                    ) -- @deprecated siguiente; destino .infobox-<nombre> .infobox-label : cssText ( args . labelstyle ) : cssText ( rowArgs . rowcellstyle ) : wikitext ( rowArgs . label ) : hecho () finaliza la celda de datos local = fila : etiqueta ( 'td' ) celda de datos : attr ( 'colspan' , no rowArgs . label y '2' o nil ) : addClass ( no rowArgs . label y 'infobox-full-data' o 'infobox-data' ) : addClass ( rowArgs . class ) - @deprecated próximo; objetivo .infobox-<nombre> .infobox(-full) -data : cssText ( rowArgs.datastyle ) : cssText ( rowArgs.rowcellstyle ) : wikitext ( fixChildBoxes ( rowArgs.data , ' td ' ) ) de lo contrario tabla.insert ( categorías_de_fila_vacías , rowArgs . data o '' ) fin fin función local renderTitle () si no args . title entonces devuelve fin has_rows = true has_list_class ({ args . titleclass }) raíz : etiqueta ( 'caption' ) : addClass ( 'infobox-title' ) : addClass ( args . titleclass ) -- @deprecated siguiente; objetivo . infobox-<nombre> . infobox-title : cssText ( args . titlestyle ) : wikitext ( args . title ) fin de la función local                             renderAboveRow () si no es args . above entonces devuelve fin has_rows = true has_list_class ({ args . aboveclass }) raíz : etiqueta ( 'tr' ) : etiqueta ( 'th' ) : attr ( 'colspan' , '2' ) : addClass ( 'infobox-above' ) : addClass ( args . aboveclass ) -- @deprecated siguiente; objetivo . infobox-<nombre> . infobox-above : cssText ( args . abovestyle ) : wikitext ( fixChildBoxes ( args . above , 'th' )) fin de la función local renderBelowRow () si no es args . debajo entonces devuelve fin tiene_filas = verdadero tiene_clase_lista ({ args.belowclass } ) raíz : etiqueta ( ' tr ' ) : etiqueta ( 'td' ) : attr ( ' colspan' , '2' ) : addClass ( 'infobox-below' ) : addClass ( args.belowclass ) -- @deprecated siguiente; objetivo.infobox-<nombre>.infobox- below : cssText ( args.belowstyle ) : wikitext ( fixChildBoxes ( args.below , ' td ' ) ) fin de la función local addSubheaderRow ( subheaderArgs ) si subheaderArgs.data y subheaderArgs.data : gsub ( categoría_en_patrón_fila_vacía , ' ' ) :coincide ( '^%S' ) entonces tiene_filas = verdadero                              has_list_class ({  subheaderArgs . rowclass ,  subheaderArgs . class  }) fila local = raíz : etiqueta ( 'tr' ) fila : addClass ( subheaderArgs . rowclass ) celda de datos local = fila : etiqueta ( 'td' ) celda de datos : attr ( 'colspan' , '2' ) : addClass ( 'infobox-subheader' ) : addClass ( subheaderArgs . class ) : cssText ( subheaderArgs . datastyle ) : cssText ( subheaderArgs . rowcellstyle ) : wikitext ( fixChildBoxes ( subheaderArgs . data , 'td' )) de lo contrario tabla.insert ( empty_row_categories , subheaderArgs . data o '' ) fin fin función local renderSubheaders () si args . subheader entonces args . subheader1 = args . subheader fin si args . subheaderrowclass entonces args . subheaderrowclass1 = args . subheaderrowclass fin local subheadernums = getArgNums ( 'subheader' ) para k , num en ipairs ( subheadernums ) hacer addSubheaderRow ({ datos = args [ 'subheader' .. tostring ( num )], -- @deprecated siguiente; objetivo . infobox-<nombre> . infobox-subheader datastyle = args . subheaderstyle , rowcellstyle = args [ 'subheaderstyle' ..                                       tostring ( num )], clase = args . subheaderclass , rowclass = args [ 'subheaderrowclass' .. tostring ( num )] }) fin fin función local addImageRow ( imageArgs ) si imageArgs . data y imageArgs . datos : gsub ( categoría_en_patrón_fila_vacía , '' ) : match ( ' ^ %S' ) entonces tiene_filas = true tiene_clase_lista ({ imageArgs.rowclass , imageArgs.class } ) fila local = raíz : etiqueta ( 'tr' ) fila : addClass ( imageArgs.rowclass ) celda_datos local = fila : etiqueta ( 'td' ) celda_datos : attr ( ' colspan' , ' 2' ) : addClass ( ' infobox - image ' ) : addClass ( imageArgs.class ) : cssText ( imageArgs.datastyle ) : wikitext ( fixChildBoxes ( imageArgs.data , ' td ' ) ) de lo contrario tabla.insert ( categorías_fila_vacía , imageArgs.data o ' ' ) fin fin función local renderImages ( ) si args.image entonces args . imagen1 = argumentos . final de la imagen si args . título y luego argumentos . título1 = argumentos . caption end imagenums locales = getArgNums (                                         'imagen' ) para k , num en ipairs ( imagenums ) do local caption = args [ 'caption' .. tostring ( num )] datos locales = mw . HTML . crear (): wikitext ( args [ 'imagen' .. tostring ( num )]) si título entonces datos : etiqueta ( 'div' ) : addClass ( 'infobox-caption' ) - @deprecated siguiente; objetivo .infobox-<nombre> .infobox-caption : cssText ( args.captionstyle ) : wikitext ( caption ) fin addImageRow ( { datos = tostring ( datos ), -- @deprecated siguiente; objetivo .infobox-<nombre> .infobox- image datastyle = args . imagestyle , class = args . imageclass , rowclass = args [ 'imagerowclass' .. tostring ( num )] }) end end -- Cuando los encabezados automáticos están activados, preprocesa las filas función local preprocessRows () si no hay args . encabezados automáticos luego devuelven fin local rownums = unión ( getArgNums ( 'encabezado' ), getArgNums ( 'datos' )) tabla.sort ( rownums ) local lastheader para k , num en ipairs ( rownums ) hacer si args [ 'encabezado' .. tostring ( num )] entonces si lastheader entonces args [ 'header' .. tostring ( lastheader )]                                                     =  nil end lastheader = num elseif args [ 'data' .. tostring ( num )] and args [ 'data' .. tostring ( num )]: gsub ( category_in_empty_row_pattern , '' ): match ( '^%S' ) then local data = args [ 'data' .. tostring ( num )] if data : gsub ( category_in_empty_row_pattern , '' ): match ( '%S' ) then lastheader = nil end end end if lastheader then args [ 'header' .. tostring ( lastheader )] = nil end end -- Obtiene la unión de los números de los argumentos de encabezado y datos, -- y los representa todos en orden función local renderRows () números de fila locales = unión ( getArgNums ( 'header' ), getArgNums ( 'data' )) table.sort ( números de fila ) for k , num en ipairs ( rownums ) hace addRow ({ encabezado = args [ 'encabezado' .. tostring ( num )], etiqueta = args [ 'etiqueta' .. tostring ( num )], datos = args [ ' datos' .. tostring ( num )], estilo_datos = args.estilo_datos , clase = args [ 'clase' .. tostring ( num ) ], clase_fila = args [ 'clase_fila' .. tostring ( num )],                                                           -- @deprecated siguiente; target .infobox-<nombre> clase de fila estilo de fila = args [ 'estilo de fila' .. tostring ( num )], estilo de celda de fila = args [ 'estilo de celda de fila' .. tostring ( num )] }) fin fin función local renderNavBar () si no args . nombre y luego devuelve fin has_rows = true raíz : etiqueta ( 'tr' ) : etiqueta ( 'td' ) : attr ( 'colspan' , '2' ) : addClass ( 'infobox-navbar' ) : wikitext ( requerir ( 'Módulo: Navbar' ). _navbar { args . nombre , mini = 1 , }) finaliza la función local renderItalicTitle () local italicTitle = args [ 'título en cursiva' ] y mw . cuerda . inferior ( args [ 'título en cursiva' ]) si italicTitle == '' o italicTitle == 'forzar' o italicTitle == 'sí' entonces raíz : wikitexto ( require ( 'Módulo:Título en cursiva' ). _main ({}) ) end end -- Las categorías en filas vacías se recopilan en empty_row_categories. -- Esta función las agrega a la salida del módulo. No se ve afectada por -- args.decat porque este módulo no debería impedir que las categorías externas al módulo -- se representen . función local renderEmptyRowCategories () para _ , s en ipairs ( vacía_fila_categorías ) hace root : wikitext ( s ) fin fin                                              -- Representar categorías de seguimiento. args.decat == desactiva el seguimiento de categorías. función local  renderTrackingCategories ()  si args.decat == 'sí' entonces devolver fin si args.child == 'sí' entonces si args.title entonces raíz: wikitext ( ' [ [ Categoría : Páginas que utilizan plantillas de infobox integradas con el parámetro título ] ] ' ) fin si # ( getArgNums ('datos')) == 0 y mw.title.getCurrentTitle ().namespace == 0 entonces raíz: wikitext ('[[Categoría:Artículos que utilizan plantillas de infobox sin filas de datos ] ] ' ) fin fin -- [ = [ Carga los estilos de plantilla para el infobox . TODO : TERMINAR de cargar los estilos de plantilla base aquí en lugar de en MediaWiki:Common.css. Hay entre 4 y 5000 páginas con tablas de infobox "sin procesar". Consulte [[Mediawiki_talk:Common.css/to_do#Infobox]] y/o venga a ayudar :). Cuando hagamos esto, también deberíamos limpiar el CSS en línea que aparece a continuación. Tendremos que hacer alguna categoría de conversión extraña como con la barra lateral. ]=] función local loadTemplateStyles () marco local = mw . getCurrentFrame () hlist_templatestyles local = '' si listas . hlist_t . found entonces hlist_templatestyles = frame : extensionTag { nombre = 'templatestyles' , args = { src = listas . hlist_t . styles } } fin local plainlist_templatestyles = '' si listas . plainlist_t . found entonces plainlist_templatestyles = frame : extensionTag { nombre = 'templatestyles' , args = { src =                                                        listas .plainlist_t .estilos }  } fin -- Ver descripción de la función local base_templatestyles = frame : extensionTag { nombre = 'templatestyles' , args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' si args [ 'templatestyles' ] entonces templatestyles = frame : extensionTag { nombre = 'templatestyles' , args = { src = args [ 'templatestyles' ] } } fin local child_templatestyles = '' si args [ 'child templatestyles' ] entonces child_templatestyles = frame : extensionTag { nombre = 'templatestyles' , args = { src = args [ 'child templatestyles' ] } } fin local grandchild_templatestyles = '' si args [ 'grandchild templatestyles' ] entonces grandchild_templatestyles = frame : extensionTag { nombre = 'templatestyles' , args = { src = args [ 'grandchild templatestyles' ] } } fin de retorno de tabla.concat ({ -- hlist -> plainlist -> base es el mejor esfuerzo para preservar el antiguo orden de Common.css. -- este orden no es una garantía porque las filas de interés que invocan -- cada clase puede no estar en una página específica hlist_templatestyles , plainlist_templatestyles , base_templatestyles , templatestyles , child_templatestyles , grandchild_templatestyles }) fin -- funciones comunes entre los casos hijo y no hijo función local                                                               structure_infobox_common () renderSubheaders () renderImages () preprocessRows () renderRows () renderBelowRow () renderNavBar () renderItalicTitle ( ) renderEmptyRowCategories () renderTrackingCategories () cleanInfobox () end -- Especifica el diseño general del infobox, con configuraciones especiales si el infobox se usa como un ' hijo ' dentro de otro infobox. función local _infobox ( ) si args.child ~ = 'yes' entonces root = mw.html.create ( ' table' ) root : addClass ( args.subbox == 'yes' y ' infobox -subbox' o 'infobox' ) : addClass ( args.bodyclass ) -- @deprecated siguiente ; target .infobox-<name> : cssText ( args . bodystyle ) has_list_class ({ args . bodyclass }) renderTitle () renderAboveRow () else root = mw . html . create () root : wikitext ( args . title ) end structure_infobox_common () return loadTemplateStyles () .. root end -- Si el argumento existe y no está en blanco, añádelo a la tabla de argumentos. -- Los argumentos en blanco se tratan como nulos para que coincidan con el comportamiento de ParserFunctions. local function preprocessSingleArg ( argName ) if origArgs [ argName ] and origArgs [ argName ] ~= '' then args [ argName ] = origArgs [ argName ] end end -- Asigna los parámetros con los prefijos dados a la tabla args, en orden, en                               -- lotes del tamaño de paso especificado. Esto es para evitar que las referencias, etc. , aparezcan en el orden incorrecto. La tabla de prefijos debe ser una matriz que contenga tablas, cada una de las cuales tiene dos campos posibles, una cadena de "prefijo" y una tabla de "dependencia". La función siempre analiza los parámetros que contienen la cadena de "prefijo", pero solo analiza los parámetros en la tabla de "dependencia" si el parámetro de prefijo está presente y no está en blanco. función local  preprocessArgs ( prefixTable , step )   si tipo ( prefixTable ) ~= 'table' entonces error ( "Valor que no es de tabla detectado para la tabla de prefijo" , 2 ) fin si tipo ( step ) ~= 'number' entonces error ( "Valor de paso no válido detectado" , 2 ) fin -- Obtener argumentos sin un sufijo de número y verificar si hay una entrada incorrecta. para i , v en ipairs ( prefixTable ) hacer si tipo ( v ) ~= ' tabla' o tipo ( v.prefix ) ~= "cadena" o ( v.depend y tipo ( v.depend ) ~= 'tabla' ) entonces error ( 'Entrada no válida detectada en la tabla de prefijos preprocessArgs' , 2 ) fin preprocessSingleArg ( v.prefix ) - Solo analiza el parámetro depend si el parámetro prefix está presente -- y no está en blanco. si args [ v.prefix ] y v.depend entonces para j , dependValue en ipairs ( v .depend ) hacer si tipo ( dependValue ) ~= 'string' entonces error ( 'Se detectó un valor de parámetro "depend" no válido en preprocessArgs' ) fin preprocessSingleArg                                         ( dependValue ) end end end -- Obtener argumentos con sufijos numéricos. local a = 1 -- Variable de contador. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a , a + step - 1 do for j , v in ipairs ( prefixTable ) do local prefixArgName = v . prefix .. tostring ( i ) if origArgs [ prefixArgName ] then -- Hacer otro bucle si se encuentran argumentos, incluso los que están en blanco. moreArgumentsExist = true preprocessSingleArg ( prefixArgName ) end -- Procesar la tabla dependiente si el argumento de prefijo está presente -- y no está en blanco, o estamos procesando "prefix1" y "prefix" está -- presente y no en blanco, y si la tabla dependiente está presente. if v . depend and ( args [ prefixArgName ] o ( i == 1 and args [ v . prefix ])) entonces para j , dependValue en ipairs ( v . depend ) do local dependArgName = dependValue .. tostring ( i ) preprocessSingleArg ( dependArgName ) end end end end a = a + step end end -- Analiza los parámetros de datos en el mismo orden que el antiguo {{infobox}}, de modo que -- las referencias, etc., se muestren en los lugares esperados. Los parámetros que -- dependen de otro parámetro solo se procesan si ese parámetro está presente, -- para evitar que aparezcan referencias fantasmas en las listas de referencias de artículos. función local parseDataParameters () preprocessSingleArg                                                            ( 'autoheaders' ) preprocessSingleArg ( 'child' ) preprocessSingleArg ( 'bodyclass' ) preprocessSingleArg ( 'subbox' ) preprocessSingleArg ( 'bodystyle' ) preprocessSingleArg ( 'title' ) preprocessSingleArg ( 'titleclass' ) preprocessSingleArg ( 'titlestyle' ) preprocessSingleArg ( 'above' ) preprocessSingleArg ( 'aboveclass' ) preprocessSingleArg ( 'abovestyle' ) preprocessArgs ({ { prefijo = 'subheader' , depend = { 'subheaderstyle' , 'subheaderrowclass' }} }, 10 ) preprocessSingleArg ( 'subheaderstyle' ) preprocessSingleArg ( 'subheaderclass' ) preprocessArgs ({ { prefijo = 'image' , depend = { 'caption' , 'imagerowclass' }} }, 10 ) preprocessSingleArg ( 'captionstyle' ) preprocessSingleArg ( 'imagestyle' ) preprocessSingleArg ( 'imageclass' ) preprocessArgs ({ { prefijo = 'encabezado' }, { prefijo = 'datos' , depend = { 'etiqueta' }}, { prefijo = 'rowclass' }, { prefijo = 'rowstyle' }, { prefijo = 'rowcellstyle' }, { prefijo = 'clase' } },50 ) preprocessSingleArg ( 'clase de encabezado' ) preprocessSingleArg ( 'estilo de encabezado' ) preprocessSingleArg ( 'estilo de etiqueta' ) preprocessSingleArg ( 'estilo de datos' ) preprocessSingleArg ( 'debajo'                              ) preprocessSingleArg ( 'belowclass' ) preprocessSingleArg ( 'belowstyle' ) preprocessSingleArg ( 'name' ) -- comportamiento diferente para cursiva si está en blanco o ausente args [ 'italic title' ] = origArgs [ 'italic title' ] preprocessSingleArg ( 'decat' ) preprocessSingleArg ( 'templatestyles' ) preprocessSingleArg ( 'child templatestyles' ) preprocessSingleArg ( 'grandchild templatestyles' ) end -- Si se llama a través de #invoke, use los argumentos pasados ​​a la plantilla que invoca. -- De lo contrario, para fines de prueba, suponga que los argumentos se pasan directamente en . function p . infobox ( frame ) if frame == mw . getCurrentFrame () then origArgs = frame : getParent (). args else origArgs = final del marco parseDataParameters () return _infobox () end - Para llamar a través de #invoke dentro de una función de plantilla p . infoboxTemplate ( frame ) origArgs = {} para k , v en pares ( frame . args ) haga origArgs [ k ] = mw . texto . recortar ( v ) finalizar parseDataParameters () devolver _infobox () finalizar regresar p