{{#invoke:GetShortDescription|main |name= |only= |prefer= |fallback= |lang_italic= |lang_nocat= |lang_size= |lang_cat= |lang_rtl= |lang_no= }}
Al proporcionar solo el nombre de la página requerido (incluido el espacio de nombres), el módulo buscará un contenido explícito en esa página, pero si no lo encuentra, intentará buscar la descripción de wikidata. Si no se encuentra ninguno, el resultado será una cadena vacía.{{short description}}
Si el resultado es una descripción de wikidata y se declara (en la fuente) como de un idioma extranjero (es decir, no en ), el resultado será formateado apropiadamente por Module:Lang (el módulo que alimenta ), de acuerdo con MOS: OTRO IDIOMA ; consulte las descripciones de wikidata en idiomas extranjeros (a continuación).{{lang}}
{{#invoke:GetShortDescription|main |name=Wikipedia}}
Esto equivale a decir |prefer=explicit
; consulte #prefer (abajo).
Proporcionar un valor para |only=
limitará la búsqueda a solo la descripción indicada. Si no se encuentra ninguna descripción, el resultado será una cadena vacía, a menos que se proporcione un recurso alternativo; consulte #fallback (a continuación).
{{#invoke:GetShortDescription|main |name=Wikipedia |only=explicit }}
{{#invoke:GetShortDescription|main |name=Wikipedia |only=wikidata }}
Al proporcionar un valor para |prefer=
se iniciará la búsqueda de la descripción indicada, pero intente buscar la alternativa si no encuentra ninguna. Si no se encuentra ninguna descripción, el resultado será una cadena vacía, a menos que se proporcione un recurso alternativo; consulte #fallback (a continuación).
{{#invoke:GetShortDescription|main |name=Wikipedia |prefer=explicit }}
{{#invoke:GetShortDescription|main |name=Wikipedia |prefer=wikidata }}
Si se proporciona un valor para |fallback=
y no se encuentra ninguna descripción mediante la ruta expresada, el resultado será el recurso alternativo indicado.
{{#invoke:GetShortDescription|main |name=Example |only=explicit |fallback=This is a fallback }}
{{#invoke:GetShortDescription|main |name=Example |prefer=wikidata |fallback=This is a fallback }}
Si se recupera una descripción de wikidata, que está declarada (en la fuente) como de un idioma extranjero (es decir, no en ), según MOS:OTHERLANG , la devolución tendrá el formato apropiado según Module:Lang de forma predeterminada. Esto se puede desactivar o |lang_no=yes
ajustar mediante los parámetros de {{lang}}
: |lang_italic=
, |lang_nocat=
, |lang_size=
y |lang_cat=
; |lang_rtl=
consulte la documentación de lang para obtener más detalles.
Proporcionar un valor para |objectify_alarm=
hará que se devuelvan mensajes alarmantes (mensajes informativos rojos) como tablas.
Proporcionar un valor para |report_redlinks=
provocará la devolución de un informe en lugar de nada en caso de que la página nombrada no exista (es decir, un WP:REDLINK ) y {{short description}}
se procese una búsqueda de una plantilla.
También se devolverá una tabla en caso de que se le indique al módulo |prefer=explicit
(su valor predeterminado) y devuelve una descripción de Wikidata. Si el motivo por el que no hay una descripción breve explícita es porque se estableció en none ; la tabla incluirá un valor paratable.none
Vea a continuación ejemplos de estos comportamientos:
getShortDescription local = require ( 'Módulo:GetShortDescription' ). principallocal short_description = getShortDescription ( { -- nombre requerido = 'nombre de la página' , - opcional preferir = 'explícito' o 'wikidata' , solo = 'explícito' o 'wikidata' , respaldo = 'respaldo' , objectify_alarm = verdadero , report_redlinks = verdadero , lang_no = 'sí' , -- {{lang}} opciones lang_italic = < sí , no , sin configurar , invertir , predeterminado > , lang_nocat = < sí , y , true , t , on , 1 > , lang_size = < tamaño de fuente CSS e . gramo . '1.5em' > , lang_cat = < no , n , false , f , off , 0 > , lang_rtl = < no ( predeterminado ), sí > } ) - Si hemos solicitado report_redlinks u objectify_alarm, entonces si escribe ( short_description ) == 'table' , entonces si short_description . alarma entonces - Se ha devuelto un mensaje alarmante local alarming_message = short_description . alarma elseif short_description . enlace rojo entonces - Haz algo al respecto elseif short_description . wikidata entonces - Se devolvió una descripción de Wikidata sin ser solicitada explícitamente local wikidata_description = short_description . wikidata si descripción_corta . none entonces : porque la descripción corta explícita era 'ninguna' end end end
la función local está vacía ( valor ) valor de retorno == nil o valor == '' finaliza la función local notEmpty ( valor ) devuelve no está vacía ( valor ) finaliza la función local isNone ( valor ) valor de retorno : inferior () == 'ninguno' finaliza local función alarmingMessage ( mensaje , vista previa ) mensaje = '<span style="color:#d33">[[Module:GetShortDescription]] ' .. mensaje .. '.</span>' si no es una vista previa , entonces mensaje = mensaje .. '[[Categoría:Páginas que muestran mensajes alarmantes sobre el Módulo:GetShortDescription]]' end return message end -- Concatenación gramaticalmente razonable de posibles problemas en un mensaje por destino de enlace problemático. Advertencia de vista previa de función local ( nombre_argumentos , cantidad_de_cosas ) mensaje local = '' si cantidad_de_cosas . params > 3 luego mensaje = mensaje .. 'con parámetros extraños' finaliza si cantidad_de_cosas . descripciones > 1 luego mensaje = mensaje .. ', declarando ' .. cantidad_de_cosas . descripciones ... 'descripciones breves' terminan si cantidad_de_cosas . plantillas > 1 o no vacías ( mensaje ) y luego mensaje = 'ha detectado que [[:' .. args_name .. '|' .. args_name .. ']] tiene ' .. cantidad_de_cosas . plantillas .. ' {{tlx|breve descripción}}' .. mensaje mw .agregar advertencia ( alarmingMessage ( mensaje , verdadero )) fin fin función local getWikidataDescription ( título , argumentos , reserva ) local wikidata_id = mw . wikibase . getEntityIdForTitle ( título ) si está vacío ( wikidata_id ) , devuelve nil end local wikidata_description , wikidata_description_lang = mw . wikibase . getDescriptionWithLang ( wikidata_id ) si está vacío ( wikidata_description ) entonces devuelve nil end local result = { wikidata = wikidata_description } si está vacío ( args . lang_no ) y notEmpty ( wikidata_description_lang ) y wikidata_description_lang ~= 'en' entonces - Según los documentos, este es un posibilidad... resultado . wikidata = requerir ( 'Módulo:Lang' ). _lang { wikidata_description_lang , wikidata_description , cursiva = args . lang_italic , nocat = args . lang_nocat , tamaño = argumentos . tamaño_lang , gato = argumentos . lang_cat , rtl = argumentos . lang_rtl } resultado final . fallback = retorno resultado de retorno final de la función local getShortDescriptionTemplates ( title_table ) local page_content = title_table : getContent () - Supongamos que ningún contenido significa un título inexistente porque es más barato que probar si existe. si está vacío ( page_content ) luego regresa { redlink = true } end localcontent_of_all_short_description_templates = {} -- Porque podría haber cualquier cantidad de plantillas de descripción breve, y no todas donde debería haber; Consigue todas las plantillas. para la plantilla en page_content : gmatch ( '{%b{}}' ) haz local short_description_content = mw . cuerda . match ( template , '^{{%s*[Ss]hort descripción%s*|%s*(.-)%s*}}' ) si no está vacío ( short_description_content ) entonces : recopile el contenido de las plantillas de descripciones breves. content_of_all_short_description_templates [ #content_of_all_short_description_templates + 1 ] = short_description_content end - Existe una oportunidad para ganar eficiencia - romper si se encuentra otro tipo de plantilla, por ejemplo, plantillas de citas, - pero en una página con un formato terrible, una plantilla de descripción breve ordenada por categorías probablemente se pierda. end return content_of_all_short_description_templates end local function getShortDescription ( args_name , args_name_title_table , title , title_table , fallback ) localcontent_of_all_short_description_templates = {} redirigido local : busque plantillas de descripciones breves en las páginas de redireccionamiento . si título ~= args_name entonces contenido_of_all_short_description_templates = getShortDescriptionTemplates ( args_name_title_table ) si contenido_of_all_short_description_templates . enlace rojo y luego devuelve contenidos_of_all_short_description_templates fin redirigido = fin falso si # contenidos_of_all_short_description_templates < 1 entonces contenido_of_all_short_description_templates = getShortDescriptionTemplates ( title_table ) si no está vacío ( redireccionado ) entonces redirigido = verdadero fin fin si contenidos_de_todos_cortos_descripciones_templates . redlink luego devuelve contenido_de_todos_cortos_descripciones_templates finaliza si # contenidos_de_todos_cortos_descripciones_templates < 1 luego devuelve nil final local cantidad_de_cosas = { plantillas = # contenidos_de_todos_cortos_descripciones_templates , descripciones = 0 , params = 0 } local posible_descripciones_cortas = {} - Revisa las plantillas de descripción breve: para template_content_index , _contenido en ipairs ( contents_of_all_short_description_templates ) hacer : dividir el contenido en las tuberías y recortar. local short_description_template_params = mw . texto . dividir ( short_description_template_contents , '%s*|%s*' ) si # short_description_template_params > cantidad_de_cosas . parámetros y luego cantidad_de_cosas . params = # short_description_template_params end possible_short_descriptions [ template_content_index ] = {} - Revise los parámetros: para i , param en ipairs ( short_description_template_params ) haga if param == 'noreplace' o mw . cuerda . match ( param , '^2%s*=%s*noreplace$' ) luego - Tome nota de 'noreplace'-ing para establecer la jerarquía más adelante. posibles_descripciones_cortas [ template_content_index ]. noreplace = verdadero de lo contrario local has_equals = parámetro : coincidencia ( '=' ) si no es has_equals o param : match ( '^1' ) , entonces : toma la descripción breve. si has_equals entonces param = mw . cuerda . gsub ( param , '^1%s*=%s*' , '' ) end : si la plantilla tiene una descripción breve numerada y no numerada; -- lo que ocurra último (ltr) será utilizado por esa plantilla, por lo que sobrescribir funciona muy bien. posibles_descripciones_cortas [ template_content_index ]. descripción = param - Y queremos saber la cantidad total de descripciones que se declaran. cantidad_de_cosas . descripciones = cantidad_de_cosas . descripciones + 1 end end end end local short_descriptions = {} - Revise las posibles descripciones breves para obtener descripciones breves definitivas, - y prepárese para determinar cuál de las posibles descripciones breves se está aplicando realmente a la página: para i , posible_descripción_corta en ipairs ( posible_corta_descripciones ) hazlo si es posible_corta_descripción . descripción entonces : si una descripción es 'no reemplazable' o 'ninguna'; degradarlo. if ( posible_corta_descripción . noreplace o isNone ( posible_corta_descripción . descripción )) y # posible_corta_descripciones > 1 entonces - Pero no lo degrade si ya está en la parte inferior. si i > 1 entonces table.insert ( descripciones_cortas , # descripciones_cortas , posible_descripciones_cortas ) else descripciones_cortas [ # descripciones_cortas + 1 ] = descripción_cortas posibles fin else descripciones_cortas [ # descripciones_cortas + 1 ] = posible_short_description end end end - Deje quevista previaWarning() resuelva si estos números son malos. vista previaAdvertencia ( args_name , cantidad_de_cosas ) si # descripciones_cortas >= 1 entonces - ¡Pop! descripción_corta local = descripciones_cortas [ # descripciones_cortas ]. descripción si no está vacío ( descripción_corta ) entonces devuelve { explícito = descripción_corta , retroceso = respaldo , redirigido = redirigido } fin fin devuelve nil fin de la función local isSisterProjectLink ( título ) local sister_project_prefixes = { 'wikcionario' , 'wikt' , 'wikinews' , 'n ' , 'wikibooks' , 'b' , 'wikiquote' , 'q' , 'wikisource' , 's' , 'wikispecies' , 'especies' , 'wikiversidad' , 'v' , 'wikivoyage' , 'voy' , 'comunes' , 'c' , 'wikidata' , 'd' , 'mediawikiwiki' , 'mw' , 'wikimedia' , 'fundación' , 'wmf' , 'meta' , 'm' , 'incubadora' , 'phabricator ' , 'phab' } local pre_colon = título : coincide ( '^(%a+):' ) si pre_colon entonces para i ,hermana en ipairs ( sister_project_prefixes ) hazlo si pre_colon == hermana y luego devuelve verdadero final final devuelve fin falso - Literalmente probar si title_table.isRedirect puede ser costoso; -- el procesamiento de esta manera resuelve (múltiples) redirecciones sin la posible verificación costosa. función local getTitleAndTable ( nombre_origen ) tabla_título local = mw . título . nuevo ( nombre_origen ) tabla_título = tabla_título . redirigirTarget o title_table título local = title_table . prefixedText si título == nombre_origen entonces devuelve título , tabla_título finaliza devolución getTitleAndTable ( título ) finaliza la función local getDescription ( args ) nombre_args local = args . name if isEmpty ( args_name ) luego return { alarm = 'requiere un nombre de página (incluido el espacio de nombres)' } end - Mantenga el nombre original, limpio y su tabla_título para más adelante. local args_name_title_table = mw . título . nuevo ( args_name ) args_name = args_name_title_table . prefixedText si isSisterProjectLink ( args_name ) luego devuelve el título local final nulo , title_table = getTitleAndTable ( args_name ) si el título ~= args_name entonces si isSisterProjectLink ( título ) entonces devuelve nil end end local only = args . solo local prefiere = args . preferir o 'explícito' : pase args_name a getShortDescription() para que las advertencias previas () no sean confusas para las redirecciones. si no está vacío ( solo ) , si solo == 'explícito' , devuelva getShortDescription ( args_name , args_name_title_table , title , title_table ) end if only == 'wikidata' luego regresa getWikidataDescription ( title , args ) end return { alarm = 'acepta "explícito" o "wikidata" como valor de |only=' } end if notEmpty ( preferir ) entonces si prefiere == 'explícito' entonces local short_description = getShortDescription ( args_name , args_name_title_table , title , title_table ) si notEmpty ( short_description ) entonces - Supongamos que una búsqueda en Wikidata sería una mala idea para un título supuestamente inexistente. si descripción_corta . enlace rojo o ( no isNone ( short_description . explicit ) o args . none_is_valid ) luego devuelve short_description end end return getWikidataDescription ( title , args , true ) finaliza si prefiere == 'wikidata' luego devuelve getWikidataDescription ( title , args ) o getShortDescription ( args_name , args_name_title_table , title , title_table , true ) end return { alarm = 'acepta "explícito" o "wikidata" como valor de |prefer=' } end end función local principal ( args ) resultado local = getDescription ( args ) si no está vacío ( resultado ) entonces si resultado . alarma y luego resultado . alarma = alarmingMessage ( resultado . alarma ) finaliza si args . stringify entonces si resultado . alarma y luego resultado = resultado . alarma más resultado = resultado . explícito o resultado . wikidata si argumentos . none_is_nil y isNone ( resultado ) entonces resultado = nil fin fin si no resultado . alarma y argumentos . none_is_nil entonces descripción local = resultado . explícito o resultado . wikidata si descripción y argumentos . none_is_nil y isNone ( descripción ) luego resultado = nil final final devuelve resultado final local p = { } función p . argumentos locales principales ( marco ) = requerir ( 'Módulo:Argumentos' ). getArgs ( frame ) si está vacío ( args ) entonces devuelve alarmingMessage ( 'could not getArgs' ) - Esto realmente sería alarmante. fin de retorno principal ( args ) fin de retorno p