stringtranslate.com

Módulo: Obtener descripción breve

 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