Este módulo muestra un cuadro verde que contiene documentación para plantillas , módulos Lua u otras páginas. La plantilla {{ documentation }} lo invoca.
Para la mayoría de los usos, debe utilizar la plantilla {{ documentation }} ; consulte la página de esa plantilla para obtener sus instrucciones de uso y parámetros.
Para utilizar este módulo desde otro módulo Lua, primero cárguelo con require
:
documentación local = require ( 'Módulo:Documentación' ). main
Luego puedes simplemente llamarlo usando una tabla de argumentos.
documentación { content = 'Un poco de documentación' , [ 'link box' ] = 'Mi cuadro de enlace personalizado' }
Consulte la documentación de la plantilla para obtener instrucciones de uso y una lista de parámetros.
El módulo tiene un archivo de configuración en Módulo:Documentación/config que tiene como objetivo permitir una traducción y portabilidad sencillas a otras wikis. Consulta los comentarios del código en la página de configuración para obtener instrucciones. Si tienes alguna pregunta o necesitas una función que no está implementada actualmente, deja un mensaje en Template talk:Documentation para llamar la atención de un desarrollador.
Los mensajes que deben personalizarse para mostrar una plantilla/módulo de documentación en la parte superior de las páginas del módulo son MediaWiki:Scribunto-doc-page-show y MediaWiki:Scribunto-doc-page-does-not-exist .
-- Este módulo implementa {{documentation}}. -- Obtener los módulos necesarios. local getArgs = require ( 'Module:Arguments' ). getArgs -- Obtener la tabla de configuración. local cfg = mw . loadData ( 'Module:Documentation/config' ) local p = {} -- Funciones de uso frecuente. local ugsub = mw . ustring . gsub local format = mw . ustring . format ---------------------------------------------------------------------------- -- Funciones auxiliares -- -- Se definen como funciones locales, pero se ponen a disposición en la tabla p para fines de prueba. ---------------------------------------------------------------------------- función local message ( cfgKey , valArray , expectType ) --[[ -- Obtiene un mensaje de la tabla cfg y lo formatea si corresponde. -- La función genera un error si el valor de la tabla cfg no es -- del tipo expectType. El tipo predeterminado para expectType es 'string'. -- Si la tabla valArray está presente, las cadenas como $1, $2, etc. en el mensaje se sustituyen con valores de las claves de la tabla [1], [2], etc. -- Por ejemplo, si el mensaje "foo-message" tuviera el valor 'Foo $2 bar $1.', message('foo-message', {'baz', 'qux'}) devolvería "Foo qux bar baz." --]] local msg = cfg [ cfgKey ] expectType = expectType or 'string' if type ( msg ) ~= expectType then error ( 'message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type ( msg ) .. ')' , 2 ) end if not valArray then return msg end local function getMessageVal ( match ) match = tonumber ( match ) return valArray [ match ] o error ( 'mensaje: no se encontró ningún valor para la clave $' .. match .. ' en el mensaje cfg.' .. cfgKey , 4 ) fin return ugsub ( msg , '$([1-9][0-9]*)' , getMessageVal ) fin p . message = message función local makeWikilink ( página , mostrar ) si mostrar entonces return format ( '[[%s|%s]]' , página , mostrar ) de lo contrario return format ( '[[%s]]' , página ) fin fin p . makeWikilink = makeWikilink función local makeCategoryLink ( cat , ordenar ) catns locales = mw . site . namespaces [ 14 ]. name return makeWikilink ( catns .. ':' .. cat , ordenar ) fin p . makeCategoryLink = makeCategoryLink función local makeUrlLink ( url , mostrar ) devolver formato ( '[%s %s]' , url , mostrar ) fin p . makeUrlLink = makeUrlLink función local makeToolbar (...) ret local = {} lim local = seleccionar ( '#' , ...) si lim < 1 entonces devolver nil fin para i = 1 , lim hacer ret [ # ret + 1 ] = seleccionar ( i , ...) fin -- 'documentation-toolbar' return format ( '<span class="%s">(%s)</span>' , message ( 'toolbar-class' ), table.concat ( ret , ' | ' ) ) fin p .makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Procesamiento de argumentos ---------------------------------------------------------------------------- función local makeInvokeFunc ( funcName ) return function ( frame ) local args = getArgs ( frame , { valueFunc = function ( key , value ) if type ( value ) == 'string' then value = value : match ( ' ^%s*(.-)%s*$' ) -- Eliminar espacios en blanco. if key == 'heading' or value ~= '' then return value else return nil fin else return value fin fin }) return p [ funcName ]( args ) fin fin ---------------------------------------------------------------------------- -- Puntos de entrada ---------------------------------------------------------------------------- función p . inexistente ( marco ) si mw.título.getCurrentTitle (). subpageText == ' casosdeprueba ' entonces devuelve marco : expandTemplate { título = ' módulo casos de prueba aviso' } de lo contrario devuelve p.main ( marco ) fin fin p.main = makeInvokeFunc ( ' _ main ' ) función p . _main ( args ) --[[ -- Esta función define el flujo lógico para el módulo. -- @args - tabla de argumentos pasados por el usuario --]] local env = p . getEnvironment ( args ) local root = mw . html . create ( ) root : wikitext ( p._getModuleWikitext ( args , env )) : wikitext ( p.protectionTemplate ( env ) ) : wikitext ( p.sandboxNotice ( args , env )) : tag ( 'div' ) -- 'documentation-container' : addClass ( message ( ' container' )) : attr ( 'role' , ' complementary ' ) : attr ( 'aria-labelledby' , args.heading ~ = '' y 'documentation-heading' o nil): attr('aria-label', args.heading == ' ' y ' Documentation ' o nil ) : newline ( ) : tag ( ' div ' ) -- ' documentation ' : addClass ( message ( ' main - div-classes' )) : newline () : wikitext ( p . _startBox ( args , env )) : wikitext ( p . _content ( args , env )) : etiqueta ( 'div' ) -- 'documentation-clear' : addClass ( mensaje ( 'clear' )) : hecho () : nueva línea () :hecho () : wikitext ( p._endBox ( args , env )) : done ( ) : wikitext ( p.addTrackingCategories ( env )) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame ( ) : extensionTag ( ' templatestyles ' , ' ' , { src = cfg [ 'templatestyles' ] }) ..tostring ( root ) end ---------------------------------------------------------------------------- -- Configuración del entorno ---------------------------------------------------------------------------- function p.getEnvironment ( args ) --[[ -- Devuelve una tabla con información sobre el entorno, incluyendo título -- objetos y otros datos relacionados con el espacio de nombres o la ruta. -- @args - tabla de argumentos pasados por el usuario -- -- Los objetos de título incluyen: -- env.title - la página para la que estamos haciendo la documentación (normalmente el título actual) -- env.templateTitle - la plantilla (o módulo, archivo, etc.) -- env.docTitle - la subpágina /doc. -- env.sandboxTitle - la subpágina /sandbox. -- env.testcasesTitle - la subpágina /testcases. -- -- Los datos incluyen: -- env.protectionLevels - la tabla de niveles de protección del objeto de título. -- env.subjectSpace - el número del espacio de nombres del tema del título. -- env.docSpace - el número del espacio de nombres en el que el título pone su documentación. -- env.docpageBase - el texto de la página base de las páginas /doc, /sandbox y /testcases, con el espacio de nombres. -- env.compareUrl - URL de la página Special:ComparePages que compara el sandbox con la plantilla. -- -- Todas las búsquedas de tabla se pasan a través de pcall para que se detecten los errores. Si ocurre un error, el valor -- devuelto será nulo. --]] local env , envFuncs = {}, {} -- Configurar la metatabla. Si se activa, llamamos a la función correspondiente en la tabla envFuncs. El valor -- devuelto por esa función se memoriza en la tabla env para que no llamemos a ninguna de las funciones -- más de una vez. (Los valores nulos no se memorizarán). setmetatable ( env , { __index = function ( t , key ) local envFunc = envFuncs [ key ] if envFunc then local success , val = pcall ( envFunc ) if success then env [ key ] = val -- Memorizar el valor. return val end end return nil end }) function envFuncs . title () -- El objeto de título para la página actual, o una página de prueba pasada con args. page. local title local titleArg = args . page if titleArg then title = mw . title . new ( titleArg ) else title = mw . title . getCurrentTitle () end return title end function envFuncs . templateTitle () --[[ -- El objeto de título de la plantilla (o módulo, etc.). -- Mensajes: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env . subjectSpace local title = env . title local subpage = title . subpageText si subpage == message ( 'sandbox-subpage' ) o subpage == message ( 'testcases-subpage' ) entonces devuelve mw . title . makeTitle ( subjectSpace , title . baseText ) de lo contrario devuelve mw . title . makeTitle ( subjectSpace , title . text ) fin fin de la función envFuncs . docTitle () --[[ -- Objeto de título de la subpágina /doc. -- Mensajes: -- 'doc-subpage' --> 'doc' --]] local title = env . title local docname = args [ 1 ] -- Página de documentación especificada por el usuario. local docpage if docname then docpage = docname else docpage = env . docpageBase .. '/' .. message ( 'doc-subpage' ) end return mw . title . new ( docpage ) end function envFuncs . sandboxTitle () --[[ -- Objeto de título para la subpágina /sandbox. -- Mensajes: -- 'sandbox-subpage' --> 'sandbox' --]] return mw . title . new ( env . docpageBase .. '/' .. message ( 'sandbox-subpage' )) end function envFuncs . testcasesTitle () --[[ -- Objeto de título para la subpágina /testcases. -- Mensajes: -- 'testcases-subpage' --> 'testcases' -- ] ] return mw.title.new ( env.docpageBase .. ' / ' .. message ( ' testcases - subpage' ) ) end function envFuncs.protectionLevels () -- La tabla de niveles de protección del objeto de título . return env.title.protectionLevels end function envFuncs.subjectSpace ( ) -- El número de espacio de nombres del asunto . return mw.site.namespaces [ env.title.namespace ] .asunto.id end function envFuncs.docSpace ( ) -- El número del espacio de nombres de la documentación. Para la mayoría de los espacios de nombres, es el mismo que el espacio de nombres del tema. Sin embargo, las páginas en los espacios de nombres Artículo, Archivo, MediaWiki o Categoría deben tener sus páginas /doc, /sandbox y /testcases en el espacio de discusión. local subjectSpace = env . subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs . docpageBase () -- La página base de las subpáginas /doc, /sandbox y /testcases. -- Para algunos espacios de nombres, esta es la página de discusión, en lugar de la página de plantilla. local templateTitle = env . templateTitle local docSpace = env . docSpace local docSpaceText = mw . site . namespaces [ docSpace ]. name -- Ensamble el enlace. docSpace nunca es el espacio de nombres principal, por lo que podemos codificar los dos puntos. return docSpaceText .. ':' .. templateTitle . text end function envFuncs . compareUrl () -- Enlace de diferencias entre el sandbox y la plantilla principal usando [[Special:ComparePages]]. local templateTitle = env . templateTitle local sandboxTitle = env . sandboxTitle if templateTitle . exists and sandboxTitle . exists then local compareUrl = mw . uri . canonicalUrl ( 'Special:ComparePages' , { page1 = templateTitle . prefixedText , page2 = sandboxTitle . prefixedText } ) return tostring ( compareUrl ) else return nil end end return env end ---------------------------------------------------------------------------- -- Plantillas auxiliares ---------------------------------------------------------------------------- p . getModuleWikitext = makeInvokeFunc ( '_getModuleWikitext' ) function p . _getModuleWikitext ( args , env ) local currentTitle = mw . title . getCurrentTitle () if currentTitle . contentModel ~= 'Scribunto' then return end pcall ( require , currentTitle . prefixedText ) -- si falla, no nos importa local moduleWikitext = package. loaded [ "Module:Module wikitext" ] if moduleWikitext then return moduleWikitext . main () end end function p . sandboxNotice ( args , env ) --[=[ -- Genera un aviso de sandbox para mostrar encima de las páginas de sandbox. -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- -- Mensajes: -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'Este es el $1 por $2.' -- 'sandbox-notice-diff-blurb' --> 'Este es el $1 por $2 ($3).' -- 'sandbox-notice-pagetype-template' --> 'página [[Wikipedia:Casos de prueba de plantilla|sandbox de plantilla]]' -- 'sandbox-notice-pagetype-module' --> 'página [[Wikipedia:Casos de prueba de plantilla|sandbox de módulo]]' -- 'sandbox-notice-pagetype-other' --> 'página sandbox' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'Consulte también la subpágina complementaria por $1.' -- 'sandbox-notice-testcases-link-display' --> 'casos de prueba' -- 'sandbox-category' --> 'Sandboxes de plantilla' -- 'module-sandbox-category' --> 'Sandboxes de módulo' -- 'other-sandbox-category' --> 'Sandboxes fuera del espacio de nombres de plantilla o módulo' --]=] local title = env . título local sandboxTitle = env . sandboxTitle local templateTitle = env . templateTitle local subjectSpace = env . subjectSpace si no ( subjectSpace y título y sandboxTitle y templateTitle y mw . title . equals ( título , sandboxTitle )) entonces devuelve nil fin -- Construye la tabla de argumentos para pasar a {{ombox}}. Necesitamos solo dos campos, "image" y "texto". local omargs = {} omargs . image = message ( 'sandbox-notice-image' ) -- Obtienes el texto. Comenzamos con la propaganda de apertura, que es algo como -- "Esta es la plantilla sandbox para [[Template:Foo]] (diff)." texto local = '__EXPECTUNUSEDTEMPLATE__' tipo de página local , sandboxCat si subjectSpace == 10 entonces tipo de página = mensaje ( 'sandbox-notice-pagetype-template' ) sandboxCat = mensaje ( 'sandbox-category' ) de lo contrario si subjectSpace == 828 entonces tipo de página = mensaje ( 'sandbox-notice-pagetype-module' ) sandboxCat = mensaje ( 'modulo-sandbox-category' ) de lo contrario tipo de página = mensaje ( 'sandbox-notice-pagetype-other' ) sandboxCat = mensaje ( 'other-sandbox-category' ) fin enlace_plantilla local = makeWikilink ( templateTitle . prefixedText ) URL_comparación local = env . compareUrl si URL_comparación entonces pantalla_comparación local = mensaje ( 'sandbox-notice-compare-link-display' ) enlace_comparación local = makeUrlLink ( compareUrl , compareDisplay ) text = text .. message ( 'sandbox-notice-diff-blurb' , { pagetype , templateLink , compareLink }) else text = text .. message ( 'sandbox-notice-blurb' , { pagetype , templateLink }) end -- Obtener la descripción de la página de casos de prueba si la página existe. Esto es algo como -- "Vea también la subpágina complementaria para [[Template:Foo/testcases|casos de prueba]]". local testcasesTitle = env . testcasesTitle if testcasesTitle and testcasesTitle . exist then if testcasesTitle . contentModel == "Scribunto" entonces local testcasesLinkDisplay = mensaje ( 'sandbox-notice-testcases-run-link-display' ) local testcasesRunLinkDisplay = mensaje ( 'sandbox-notice-testcases-run-link-display' ) local testcasesLink = makeWikilink ( testcasesTitle . prefixedText , testcasesLinkDisplay ) local testcasesRunLink = makeWikilink ( testcasesTitle . talkPageTitle . prefixedText , testcasesRunLinkDisplay ) texto = texto .. ' <br /> ' .. mensaje ( ' sandbox - notice -testcases-run-blurb' , { testcasesLink , testcasesRunLink }) de lo contrario local testcasesLinkDisplay = mensaje ( 'sandbox-notice-testcases-run-link-display' ) local testcasesLink = makeWikilink ( testcasesTitle . prefixedText , testcasesLinkDisplay ) texto = texto .. '<br />' .. mensaje ( 'sandbox-notice-testcases-blurb' , { testcasesLink }) fin end -- Agrega el sandbox a la categoría sandbox. omargs . text = text .. makeCategoryLink ( sandboxCat ) -- 'documentation-clear' return '<div class="' .. message ( 'clear' ) .. '"></div>' .. require ( 'Module:Message box' ). main ( 'ombox' , omargs ) end function p . protectionTemplate ( env ) -- Genera el ícono del candado en la parte superior derecha. -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- Mensajes: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env . protectionLevels si no protectionLevels entonces devuelve nil end local editProt = protectionLevels . edit y protectionLevels . edit [ 1 ] local moveProt = protectionLevels . move y protectionLevels . move [ 1 ] if editProt then -- La página está protegida contra edición. return require ( 'Module:Protection banner' ). _main { message ( 'protection-reason-edit' ), small = true } elseif moveProt y moveProt ~= 'autoconfirmed' then -- La página está protegida contra movimiento pero no contra edición. Excluye la protección -- contra movimiento con el nivel "autoconfirmed", ya que es equivalente a no tener ninguna protección contra movimiento. return require ( 'Module:Protection banner' ). _main { action = 'move' ,pequeño = verdadero } de lo contrario devuelve nil fin fin ---------------------------------------------------------------------------- -- Caja de inicio ---------------------------------------------------------------------------- p . startBox = makeInvokeFunc ( '_startBox' ) function p . _startBox ( args , env ) --[[ -- Esta función genera el cuadro de inicio. -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- -- El trabajo real lo realizan p.makeStartBoxLinksData y p.renderStartBoxLinks que crean -- los enlaces [ver] [editar] [historial] [purgar], y p.makeStartBoxData y p.renderStartBox -- que generan el HTML del cuadro. --]] env = env o p . getEnvironment ( args ) enlaces locales contenido local = args . content si no contenido o args [ 1 ] entonces -- No es necesario incluir los enlaces si la documentación está en la página de la plantilla. local linksData = p . makeStartBoxLinksData ( args , env ) if linksData then links = p.renderStartBoxLinks ( linksData ) end end -- Genera el html del cuadro de inicio. local data = p.makeStartBoxData ( args , env , links ) if data then return p.renderStartBox ( data ) else -- El usuario no especificó ningún encabezado. return nil end end function p.makeStartBoxLinksData ( args , env ) -- [ [ -- Realiza el procesamiento inicial de los datos para crear los enlaces [view] [edit] [history] [purge]. -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generada con p.getEnvironment -- -- Mensajes: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Plantilla:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Plantilla:Documentation/preload' -- 'create-link-display' --> 'crear' --]] local subjectSpace = env . subjectSpace local title = env . title local docTitle = env . docTitle si no es title o no docTitle entonces devuelve nil fin si docTitle . isRedirect entonces docTitle = docTitle . redirectTarget fin -- Crea un enlace si /doc no existe. local preload = args . precarga si no precarga entonces si subjectSpace == 828 entonces -- Espacio de nombres del módulo precarga = mensaje ( 'module-preload' ) de lo contrario precarga = mensaje ( 'docpage-preload' ) fin fin devolver { título = título , docTitle = docTitle , -- Ver, mostrar, editar y purgar enlaces si /doc existe. viewLinkDisplay = mensaje ( 'view-link-display' ), editLinkDisplay = mensaje ( 'edit-link-display' ), historyLinkDisplay = mensaje ( 'history-link-display' ), purgeLinkDisplay = mensaje ( 'purge-link-display' ), precarga = precarga , createLinkDisplay = mensaje ( 'create-link-display' ) } fin función p . renderStartBoxLinks ( datos ) --[[ -- Genera los enlaces [ver][editar][historial][purgar] o [crear][purgar] desde la tabla de datos. -- @data - una tabla de datos generada por p.makeStartBoxLinksData --]] docTitle local = datos . docTitle -- sí, tenemos la intención de purgar la página de plantilla en la que aparece la documentación local purgeLink = makeWikilink ( "Special:Purge/" .. data.title.prefixedText , data.purgeLinkDisplay ) if docTitle.existe then local viewLink = makeWikilink ( docTitle.prefixedText , data.viewLinkDisplay ) local editLink = makeWikilink ( " Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay) local historyLink = makeWikilink ( " Special : PageHistory / " .. docTitle.prefixedText , data.historyLinkDisplay ) return " & # 91 ; " .. viewLink .. " & # 93 ; & # 91 ; " .. editLink .. " & # 93 ; & # 91 ; " .. historyLink .. "] [" .. purgeLink .. "]" else local createLink = makeUrlLink ( docTitle : canonicalUrl { action = 'edit' , preload = data.preload }, data.createLinkDisplay ) return "[ ; " .. createLink .. "] [" .. purgeLink .. " & #93;" end return ret end function p.makeStartBoxData ( args , env , links ) -- [=[ -- Realiza el procesamiento inicial de los datos para pasarlos a la función de renderizado del cuadro de inicio, p.renderStartBox. -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- @links - una cadena que contiene los enlaces [ver][editar][historial][purgar] - podría ser nulo si hay un error. -- -- Mensajes: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Documentación de la plantilla' -- 'module-namespace-heading' --> 'Documentación del módulo' -- 'file-namespace-heading' --> 'Resumen' -- 'other-namespaces-heading' --> 'Documentación' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env . subjectSpace if not subjectSpace then -- Predeterminado a un espacio de nombres "other namespaces", para que obtengamos al menos algo de salida -- si ocurre un error. subjectSpace = 2 end local data = {} -- Encabezado local header = args . header -- Los valores en blanco no se eliminan. si encabezado == '' entonces - No mostrar el cuadro de inicio si el argumento de encabezado está definido pero en blanco. devolver nil fin si encabezado entonces datos . encabezado = encabezado de lo contrario, si espacio_asunto == 10 entonces - Espacio de nombres de plantilla datos . encabezado = mensaje ( 'documentation-icon-wikitext' ) .. ' ' .. mensaje ( 'template-namespace-heading' ) de lo contrario, si espacio_asunto == 828 entonces - Espacio de nombres de módulo datos . encabezado = mensaje ( 'documentation-icon-wikitext' ) .. ' ' .. mensaje ( 'module-namespace-heading' ) de lo contrario , si espacio_asunto == 6 entonces - Espacio de nombres de archivo datos . encabezado = mensaje ( 'file-namespace-heading' ) de lo contrario, datos .encabezado = mensaje ( 'other-namespaces-heading' ) fin -- Encabezado CSS local headerStyle = args [ 'heading-style' ] si headerStyle entonces data . headerStyleText = headerStyle else -- 'documentation-heading' data . headerClass = message ( 'main-div-heading-class' ) end -- Datos para los enlaces [view][edit][history][purge] o [create]. if links then -- 'mw-editsection-like plainlinks' data . linksClass = message ( 'start-box-link-classes' ) data . links = links end return data end function p . renderStartBox ( data ) -- Representa el html del cuadro de inicio. -- @data - una tabla de datos generados por p.makeStartBoxData. local sbox = mw . html . create ( 'div' ) sbox -- ' documentation -startbox' : addClass ( message ( ' start-box-class' )) : newline () : tag ( 'span' ) : addClass ( data.headingClass ) : attr ( 'id' , ' documentation -heading' ) : cssText ( data.headingStyleText ) : wikitext ( data.heading ) local links = data.links if links then sbox : tag ( ' span ' ) : addClass ( data.linksClass ) : attr ( ' id ' , data.linksId ) : wikitext ( links ) end return tostring ( sbox ) end ---------------------------------------------------------------------------- -- Contenido de la documentación ---------------------------------------------------------------------------- p.content = makeInvokeFunc ( '_content' ) function p . _content ( args , env ) -- Muestra el contenido de la documentación -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment env = env o p . getEnvironment ( args ) local docTitle = env . docTitle local content = args . content if not content and docTitle and docTitle . exists then content = args . _content or mw . getCurrentFrame (): expandTemplate { title = docTitle . prefixedText } end -- Los saltos de línea a continuación son necesarios para que "=== Encabezados ===" al inicio y al final -- de los documentos se interpreten correctamente. return ' \n ' .. ( content o '' ) .. ' \n ' end p . contentTitle = makeInvokeFunc ( ' _ contentTitle ' ) function p._contentTitle ( args , env ) env = env o p.getEnvironment ( args ) local docTitle = env.docTitle si no es args.content y docTitle y docTitle.existe entonces devuelve docTitle.prefixedText sino devuelve ' ' fin fin ---------------------------------------------------------------------------- -- Fin del cuadro ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc ( ' _ endBox ' ) function p._endBox ( args , env ) --[=[ -- Esta función genera el cuadro final (también conocido como el cuadro de enlace). -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- --]=] -- Obtener datos del entorno. env = env o p . getEnvironment ( args ) local subjectSpace = env . subjectSpace local docTitle = env . docTitle si no subjectSpace o no docTitle entonces devuelve nil end -- Verifica si debemos mostrar el cuadro final. Agrega el cuadro final de manera predeterminada si existe la documentación o si estamos en los espacios de nombres de usuario, módulo o plantilla. local linkBox = args [ 'link box' ] if linkBox == 'off' or not ( docTitle . exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Ensamblar el cuadro de enlace. local text = '' if linkBox then text = text .. linkBox else text = text .. ( p . makeDocPageBlurb ( args , env ) or '' ) -- "Esta documentación está transcluida desde [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- Estamos en los espacios de nombres de usuario, plantilla o módulo. -- Agregar enlaces de sandbox y casos de prueba. -- "Los editores pueden experimentar en las páginas de sandbox y casos de prueba de esta plantilla." text = text .. ( p . makeExperimentBlurb ( args , env ) or '' ) .. '<br />' si no es args . content y no args [ 1 ] entonces -- "Agregue categorías a la subpágina /doc." -- No muestre este mensaje con documentos en línea o con una página de documentos especificada explícitamente, -- ya que entonces no queda claro dónde agregar las categorías. text = text .. ( p . makeCategoriesBlurb ( args , env ) o '' ) end text = text .. ' ' .. ( p . makeSubpagesBlurb ( args , env ) o '' ) --"Subpáginas de esta plantilla" end end local box = mw . html . create ( 'div' ) -- 'documentation-metadata' box : attr ( 'role' , 'note' ) : addClass ( message ( 'end-box-class' )) -- 'plainlinks' : addClass ( message ( 'end-box-plainlinks' )) : wikitext ( text ) : done () return ' \n ' .. tostring ( box ) end function p . makeDocPageBlurb ( args , env ) --[=[ -- Crea la propaganda "Esta documentación se transcluye desde [[Template:Foo]] (edición, historial)". -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- -- Mensajes: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'La [[Wikipedia:Plantilla documentación|documentación]] anterior -- es [[Help:Transclusion|transcluida]] desde $1.' -- 'module-preload' --> 'Plantilla:Documentación/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'Es posible que desee crear una página de documentación para este [[Wikipedia:Lua|módulo Scribunto]].' --]=] local docTitle = env . docTitle if not docTitle then return nil end if docTitle . exists then -- /doc existe; enlace a él. local docLink = makeWikilink ( docTitle.prefixedText ) local editDisplay = message ( ' edit -link-display' ) local editLink = makeWikilink ( "Special:EditPage/" .. docTitle.prefixedText, editDisplay) local historyDisplay = message('history-link-display') local historyLink = makeWikilink( " Special : PageHistory / " .. docTitle.prefixedText , historyDisplay ) return message ( ' transcluded - from - blurb ' , { docLink } ) .. ' ' .. makeToolbar ( editLink , historyLink ) .. ' <br /> ' elseif env.subjectSpace == 828 then -- / doc no existe ; pide crearlo . local createUrl = docTitle : canonicalUrl { action = 'editar' , preload = message ( 'module-preload' )} local createDisplay = message ( 'create-link-display' ) local createLink = makeUrlLink ( createUrl , createDisplay ) return message ( 'create-module-doc-blurb' , { createLink }) .. '<br />' fin fin función p.makeExperimentBlurb ( args , env ) -- [ [ -- Muestra el texto "Los editores pueden experimentar en las páginas sandbox (editar | diff) y casos de prueba (editar) de esta plantilla". -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- -- Mensajes: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Crear versión sandbox de $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Plantilla:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Plantilla:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Plantilla:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Los editores pueden experimentar en las páginas $1 y $2 de este módulo.' -- 'experiment-blurb-template' --> 'Los editores pueden experimentar en las páginas $1 y $2 de esta plantilla.' --]] local subjectSpace = env . subjectSpace local templateTitle = env . templateTitle local sandboxTitle = env . sandboxTitle local testcasesTitle = env . testcasesTitle local templatePage = templateTitle . prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Crear enlaces.sandboxLinks local , testcasesLinks si sandboxTitle . existe entonces sandboxPage local = sandboxTitle . prefixedText local sandboxDisplay = mensaje ( 'sandbox-link-display' ) sandboxLink local = makeWikilink ( sandboxPage , sandboxDisplay ) sandboxEditDisplay local = mensaje ( 'sandbox-edit-link-display' ) sandboxEditLink local = makeWikilink ( "Especial:EditPage/" .. sandboxPage , sandboxEditDisplay ) compareUrl local = env . compareUrl local compareLink si compareUrl entonces local compareDisplay = mensaje ( 'comparar-enlace-mostrar' ) compareLink = makeUrlLink ( compararUrl , compareDisplay ) fin sandboxLinks = sandboxLink .. ' ' .. makeToolbar ( sandboxEditLink , compareLink ) de lo contrario local sandboxPreload si subjectSpace == 828 entonces sandboxPreload = mensaje ( 'módulo-sandbox-preload' ) de lo contrario sandboxPreload = mensaje ( 'plantilla-sandbox-preload' ) fin local sandboxCreateUrl = sandboxTitle : canonicalUrl { acción = 'editar' , precarga = sandboxPreload } local sandboxCreateDisplay = mensaje ( 'sandbox-crear-enlace-mostrar' ) local sandboxCreateLink = makeUrlLink ( sandboxCreateUrl , sandboxCreateDisplay ) local mirrorSummary = mensaje ( 'resumen-edición-espejo' , { makeWikilink ( templatePage )}) mirrorPreload local = mensaje ( 'precarga-del-enlace-del-espejo' ) mirrorUrl local = sandboxTitle : canonicalUrl { acción = 'editar' , precarga = mirrorPreload , resumen = mirrorSummary } si subjectSpace == 828 entonces mirrorUrl = sandboxTitle : canonicalUrl { acción = ' editar' , precarga = templateTitle.prefixedText , resumen = mirrorSummary } fin local mirrorDisplay = mensaje ( 'mirror-link-display' ) mirrorLink local = makeUrlLink ( mirrorUrl , mirrorDisplay ) sandboxLinks = mensaje ( ' sandbox -link-display' ) .. ' ' .. makeToolbar ( sandboxCreateLink , mirrorLink ) fin si testcasesTitle.existe entonces local testcasesPage = testcasesTitle . prefixedText local testcasesDisplay = message ( 'testcases-link-display' ) local testcasesLink = makeWikilink ( testcasesPage , testcasesDisplay ) local testcasesEditUrl = testcasesTitle : canonicalUrl { action = 'edit' } local testcasesEditDisplay = message ( 'testcases-edit-link-display' ) local testcasesEditLink = makeWikilink ( " Special:EditPage/" .. testcasesPage , testcasesEditDisplay ) -- para Módulos, añadir enlace de ejecución de casos de prueba si existe si testcasesTitle.contentModel == " Scribunto " y testcasesTitle.talkPageTitle y testcasesTitle.talkPageTitle.existen entonces local testcasesRunLinkDisplay = message ( ' testcases -run-link-display ' ) testcasesRunLink local = makeWikilink ( testcasesTitle.talkPageTitle.prefixedText , testcasesRunLinkDisplay ) testcasesLinks = testcasesLink .. ' ' .. makeToolbar ( testcasesEditLink , testcasesRunLink ) de lo contrario testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) de lo contrario testcasesPreload local si subjectSpace == 828 entonces testcasesPreload = message ( ' module - testcases - preload ' ) de lo contrario testcasesPreload = message ( ' template - testcases - preload ' ) de lo contrario testcasesCreateUrl local = testcasesTitle : canonicalUrl { action = ' edit ' , preload = testcasesPreload } testcasesCreateDisplay local = message ( 'testcases-create-link- display ' ) testcasesCreateLink local = makeUrlLink ( testcasesCreateUrl , testcasesCreateDisplay ) testcasesLinks = message ( 'testcases-link-display' ) .. ' ' .. makeToolbar ( testcasesCreateLink ) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, { sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb ( args , env ) -- [ [ -- Genera el texto " Agregue categorías a la subpágina / doc " . -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- Mensajes: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Agregue categorías a la subpágina $1.' --]] local docTitle = env . docTitle if not docTitle then return nil end local docPathLink = makeWikilink ( docTitle . prefixedText , message ( 'doc-link-display' )) return message ( 'add-categories-blurb' , { docPathLink }) end function p . makeSubpagesBlurb ( args , env ) --[[ -- Genera el enlace "Subpáginas de esta plantilla". -- @args - una tabla de argumentos pasados por el usuario -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- Mensajes: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpáginas de este $1' --]] local subjectSpace = env . subjectSpace local templateTitle = env . templateTitle si no subjectSpace o no templateTitle entonces devuelve nil fin local pagetype si subjectSpace == 10 entonces pagetype = message ( 'template-pagetype' ) de lo contrario si subjectSpace == 828 entonces pagetype = message ( 'module-pagetype' ) de lo contrario pagetype = message ( 'default-pagetype' ) fin local subpagesLink = makeWikilink ( 'Special:PrefixIndex/' .. templateTitle . prefixedText .. '/' , message ( 'subpages-link-display' ,{ tipo de página }) ) devolver mensaje ( 'subpages-blurb' , { subpagesLink }) fin ---------------------------------------------------------------------------- -- Categorías de seguimiento ---------------------------------------------------------------------------- function p . addTrackingCategories ( env ) --[[ -- Verificar si {{documentation}} está transcluido en una página /doc o /testcases. -- @env - tabla de entorno que contiene objetos de título, etc., generados con p.getEnvironment -- Mensajes: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Páginas de Wikipedia con un uso extraño de ((documentation))' -- -- Las páginas /testcases en el espacio de nombres del módulo no están categorizadas, ya que pueden haber sido transcluidas -- {{documentation}} automáticamente. --]] local title = env . title local subjectSpace = env . subjectSpace si no es título o no subjectSpace entonces devuelve nil fin local subpágina = título . subpáginaTexto si mensaje ( 'display-strange-usage-category' , nil , 'boolean' ) y ( subpágina == mensaje ( 'doc-subpage' ) o subjectSpace ~= 828 y subpágina == mensaje ( 'testcases-subpage' ) ) entonces devuelve makeCategoryLink ( mensaje ( 'strange-usage-category' )) fin devuelve '' fin devuelve p