En la Wikipedia en inglés, este módulo se denomina . Consulta la documentación de esa plantilla para obtener instrucciones de uso.{{Attached KML}}
<includeonly>{{#invoke:MODULENAME|main}}</includeonly><noinclude>{{TEMPLATENAME|demo=yes}}{{Documentation}}</noinclude>
-- ##### Localisation (L10n) settings #####
y -- #### End of L10n settings ####
, reemplazando los valores entre "
"
los símbolos con valores locales (según sea necesario)__HIDDENCAT__
palabra mágica.-- Nota: Originalmente escrito en Wikipedia en inglés como [[w:en:Module:Attached_KML]] -- ##### Configuración de localización (L10n) ##### local L10n = { -- Nombres de parámetros de plantilla -- (reemplace los valores entre comillas con nombres de parámetros locales) para = { display = "display" , from = "from" , header = "header" , title = "title" , wikidata = "wikidata" , demo = "demo" , }, -- Otras configuraciones config = { -- controla el formato usado para la visualización en línea, se puede configurar en "box" (predeterminado) o "line" -- Ejemplo de "box": https://en.wikipedia.org/wiki/Special:Purge/Template:Attached_KML -- Ejemplo de "line": https://sv.wikipedia.org/wiki/Special:Purge/Mall:KML inline_format = "box" , }, -- Otras cadenas str = { inline = "inline" , -- usado con parámetro de visualización: (|display=inline) o (|display=title) o (|display=inline,title) o (|display=title,inline) title = "title" , -- (como arriba) dsep = "," , -- separador entre inline y title (coma en el ejemplo anterior) kml_prefix = "Template:Attached KML/" , -- los archivos KML locales se almacenan como subpáginas de esta ubicación default_title = "Mapa de ruta" , -- título predeterminado para enlaces en la parte superior de la página, cuando el parámetro title no se usa en la inclusión default_header = "" , -- encabezado predeterminado para enlaces en el cuadro inline, cuando el parámetro header no se usa en la inclusión kml_file = "Archivo KML" , -- texto para mostrar para el enlace al archivo KML sin procesar edit = "edit" , -- texto para mostrar para el enlace para editar archivo KML help = "help" , -- texto para mostrar para el enlace a la página de ayuda help_location = "Help:Attached KML" , -- página a la que enlazar para el enlace a la página de ayuda err_prepend = "KML adjunto" , -- texto para anteponer a los mensajes de error,cuando se muestra en la parte superior de la página (display=title) cat = { -- seguimiento de categorías: se requiere el marcado wiki completo o se establece en la cadena vacía ("") para no seguir la condición wikidata_kml = "[[Categoría:Artículos que usan KML de Wikidata]]" , -- seguimiento de artículos del espacio principal que usan KML de Wikidata local_kml = "[[Categoría:Artículos que usan KML que no son de Wikidata]]" , -- seguimiento de artículos del espacio principal que no usan KML de Wikidata error_mqid = "[[Categoría:Errores de KML adjuntos|M]]" , -- seguimiento de error malformed_qid error_badqid = "[[Categoría:Errores de KML adjuntos|W]]" , -- seguimiento de error bad_qid error_noitem = "[[Categoría:Errores de KML adjuntos|N]]" , -- seguimiento de error no_item error_from = "[[Categoría:Errores de KML adjuntos|F]]" , -- seguimiento de error bad_from error_nokml = "[[Categoría:Errores KML adjuntos|K]]" , -- rastrea el error no_kml }, line = { -- estas cadenas solo son necesarias si se usa la configuración 'inline_format = "line"' start = "" , -- wikitexto para mostrar al inicio de la línea, puede incluir marcado de imagen, debe comenzar con un separador de espacios = "" , -- texto para mostrar entre enlaces a proveedores de mapas externos, debe incluir espacios }, } } L10n . str . err = { -- mensajes de error malformed_qid = "Error: id de elemento malformado en <code><nowiki>|" .. L10n . para . wikidata .. "=</nowiki></code>" , -- el id del elemento no coincide con el patrón (número con prefijo Q) bad_qid = "Error: elemento especificado en Wikidata, o en <code><nowiki>|" .. L10n . para . wikidata .. "=</nowiki></code>, no es un archivo KML <small>(P31→Q26267864 no encontrado)</small>" , -- el elemento no tiene una declaración P31→Q26267864 no_item = "Error: elemento especificado en <code><nowiki>|" .. L10n . para . wikidata .. "=</nowiki></code> no encontrado en Wikidata" ,-- elemento no encontrado en wikidata bad_from = "Error: archivo KML no encontrado, verifique <code><nowiki>|" .. L10n . para . from .. "=</nowiki></code>" , -- El KML especificado por el parámetro from no existe no_kml = "Error: archivo KML no encontrado" , -- no se encontró ningún archivo KML } -- Máscaras para proveedores de mapas externos, en el formato: -- externalLinkMasks[index-number] = { short = "short-label", long = "long-label", link = "url" }' -- La etiqueta corta se usa para los enlaces de título; la etiqueta larga se usa para los enlaces en línea -- Los enlaces en la salida se ordenarán por número de índice -- En lugar de la URL sin procesar del archivo kml o la URL sin procesar codificada, use __KML_URL__ o __KML_URL_E__ local externalLinks = {} --externalLinks[1] = { -- short = "Bing", -- long = "Mostrar en Bing Maps", -- link = "http://www.bing.com/maps/?mapurl=__KML_URL__" --} -- #### Fin de la configuración de L10n #### -- Tabla de wikis disponibles, en el orden en que se buscarán archivos kml -- (una vez que se encuentra un archivo kml, no se verifican otros sitios) local sites = { { mw . ustring . match ( mw . site . server , "%w+" ) .. mw . ustring . gsub ( mw . ustring . lower ( mw . site . siteName ), "[mp]edia" , "" ), mw . ustring . sub ( mw . site . server , 3 ), "" }, -- wiki local (listado primero para que los archivos locales puedan anular los archivos en otros wikis) { "commonswiki" , "commons.wikimedia.org" , "c:" }, -- Commons sería un repositorio central lógico para archivos KML (pero no tiene archivos a agosto de 2016) { "enwiki" , "en.wikipedia.org" , "w:en:" }, -- la fuente más grande de archivos KML (a agosto de 2016) { "bnwiki" , "bn.wikipedia.org" , "w:bn:" }, -- otros sitios con una plantilla KML,listados en orden alfabético { "cswiki" , "cs.wikipedia.org" , "w:cs:" }, { "fawiki" , "fa.wikipedia.org" , "w:fa:" }, { "frwiki" , "fr.wikipedia.org" , "w:fr:" }, { "jawiki" , "ja.wikipedia.org" , "w:ja:" }, { "mlwiki" , "ml.wikipedia.org" , "w:ml:" }, { "svwiki" , "sv. wikipedia.org" , "w:sv:" }, { "zhwiki" , "zh.wikipedia.org" , "w:zh:" }, } local p = {} función local setCleanArgs ( argsTable ) local cleanArgs = { } para clave , val en pares ( argsTable ) si escribe ( val ) == 'cadena' , entonces val = val : coincide ( '^%s*(.-)%s*$' ) si val ~= '' entonces cleanArgs [ clave ] = val fin de lo contrario cleanArgs [ clave ] = val fin fin devuelve cleanArgs fin función local safeReplace ( cadena , patrón , reemplazo ) - evita el "Error de Lua: índice de captura no válido" que ocurre con string.gsub cuando el reemplazo contiene uno o más caracteres literales % local nonpattern_parts = mw . text . split ( string , pattern ) return table.concat ( nonpattern_parts , replacement ) fin de la función local makeTitleWikitext ( titletext , err ) si err y L10n . str .err_prepend entonces err = mw . ustring . gsub ( err , ">" , ">" .. L10n . str . err_prepend .. " " , 1 ) fin local titleLinks = {} para i , v en ipairs ( externalLinks ) hacer titleLinks [ i ] = mw . ustring . format ( "[%s %s]" , v . link , v . short ) fin devolver mw . getCurrentFrame (): extensionTag { nombre = 'indicador' , args = { nombre = 'attached-kml' }, contenido = mw . ustring . formato ( "<span id= \" coordenadas \" > \'\'\' %s \'\'\' : %s</span>" , texto_título , err o tabla.concat ( Enlaces_título , " / " ) ) } fin de la función local makeInlineWikitext ( texto_encabezado , url , err ) enlaces_en_línea locales = {} para i , v en ipairs ( Enlaces_externos ) hacer enlaces_en_línea [ i ] = mw . ustring . formato ( "[%s %s]" , v . enlace , v . largo ) fin local URL_edición = mw . ustring . gsub ( url , "acción = raw" , "acción=editar" ) clase_enlace_wiki_local si mw . ustring . buscar ( URL_edición , mw .sitio . servidor , 1 , verdadero ) entonces wiki_link_class = "plainlinks" de lo contrario wiki_link_class = "" fin si L10n . config . inline_format == "línea" entonces devuelve mw . ustring . formato ( "<li>%s%s%s (<span class= \" %s \" >[%s %s] <span style= \" font-size:85%%; \" >([%s %s] • [[%s|%s]])</span></span>)</li>" , texto_de_encabezado , L10n . str . línea . inicio , err o tabla. concat ( enlaces_en_línea , L10n . str . línea . separador ), clase_de_enlace_wiki , url , L10n . str . archivo_kml , URL_de_edición , L10n . str . editar , L10n . str . ubicación_de_ayuda , L10n . str . ayuda ) fin texto local = mw . ustring . formato ( '%s<span class="%s"> \'\'\' [%s %s] \'\'\' ([%s %s] • [[%s|%s]])</span>' , texto_de_enlace_wiki , url , L10n . str . archivo_kml , URL_de_edición , L10n . str . editar , L10n . str . ubicación_de_ayuda , L10n . str . ayuda ) si err o # enlaces_en_línea > 0 entonces texto = mw . ustring . formato ( " %s<ul><li>%s</li></ul> " , texto , err o tabla.concat ( enlaces_en_línea ,"</li><li>" ) ) fin retorna require ( 'Módulo:Caja lateral' ). _main ({ class = 'attached-kml' , text = text }) fin de la función local makeKmldataDiv ( link , s_index ) retorna mw . ustring . format ( '<div class="kmldata" data-server="%s" title="%s">[[%s%s]][[Categoría:Páginas que usan el gadget WikiMiniAtlas]]</div>' , sitios [ s_index ][ 2 ], enlace , sitios [ s_index ][ 3 ], enlace ) fin de la función local makeError ( msg , cat ) retorna mw . ustring . formato ( '<strong class="attached-kml-error">%s</strong>%s' , msg , mw . title . getCurrentTitle (): inNamespaces ( 0 , 118 ) y cat o '' ) fin función local getUrlFromQid ( kml_qid ) local pcall_result , kml_entity = pcall ( mw . wikibase . getEntity , kml_qid ) si no es pcall_result entonces devuelve nil , nil , nil , makeError ( L10n . str . err . no_item , L10n . str . cat . error_noitem ) fin -- Error si la entidad no existe local p31_claim = kml_entity : getBestStatements ( "P31" ) -- P31 es la propiedad "instancia de" local tiene_bueno_p31 para k ,v en pares ( p31_claim ) hacer si ( p31_claim [ k) ] y p31_claim [ k ] .mainsnak.snaktype == " valor " y p31_claim [ k ] .mainsnak.datavalue.type == " identidad - de - wikibase " y p31_claim [ k ] .mainsnak.datavalue . valor [ "numeric-id" ] == 26267864 ) entonces has_good_p31 = verdadero fin fin si no ( has_good_p31 ) entonces -- Error si el elemento no es un archivo kml devolver nil , nil , nil , makeError ( L10n . str . err . bad_qid , L10n . str . cat . error_badqid ) fin kml_sitelink local kml_siteindex local kml_url local para i , v en ipairs ( sitios ) hacer kml_sitelink = kml_entity : getSitelink ( v [ 1 ] ) si kml_sitelink entonces kml_url = "https://" .. v [ 2 ] .. "/w/index.php?title=" .. mw . uri . encode ( kml_sitelink , "WIKI" ) .. "&action=raw" kml_siteindex = i end if kml_url then break end end return kml_url or nil , kml_sitelink or nil , kml_siteindex or nil , nil end -- Intenta obtener la URL de los elementos wikidata vinculados, devolverá nil si no puede función local getUrlFromWikidata () entidad local = mw . wikibase . getEntityObject () si no es una entidad entonces devuelve nil fin local kml_claim = entidad : getBestStatements ( "P3096" ) -- P3096 es la propiedad "Archivo KML" si kml_claim entonces -- obtiene el QID del primer valor de la propiedad si ( kml_claim [ 1 ] y kml_claim [ 1 ]. mainsnak . snaktype == "value" y kml_claim [ 1 ]. mainsnak . datavalue . type == "wikibase-entityid" ) entonces local kml_qid = "Q" .. kml_claim [ 1 ]. mainsnak . datavalue . value [ "numeric-id" ] devuelve getUrlFromQid ( kml_qid ) de lo contrario devuelve nil -- TODO: mensaje de error fin de lo contrario devuelve nil -- TODO: mensaje de error fin fin función p . main ( marco ) local padre = marco . getParent ( frame ) local Args = setCleanArgs ( parent.args ) local qid = Args [ L10n . párrafo . wikidata ] o nil : obtenga la URL del archivo KML wikiUrl local , wikiTitle , wikiLink , trackingWikitext , kmlError si no ( Args [ L10n . para . from ]) entonces, si no es qid, entonces wikiUrl , wikiLink , siteindex , kmlError = getUrlFromWikidata () elseif mw . cuerda . encontrar ( qid , "^Q%d+" ) entonces wikiUrl , wikiLink , siteindex , kmlError = getUrlFromQid ( qid ) de lo contrario kmlError = makeError ( L10n . str . err . malformed_qid , L10n . str . cat . error_mqid ) fin fin si no ( wikiUrl ) entonces -- ¿ARREGLAME? esto huele mal. no debería ser necesario crear un nuevo título de un to_string -- a partir del título actual y luego convertirlo en formato de texto wikiLink = Args [ L10n . para . from ] o mw . title . new ( tostring ( mw . title . getCurrentTitle ())). texto wikiLink = L10n . str . kml_prefix .. wikiLink wikiTitle = mw . title . nuevo ( wikiLink ) si no ( wikiTitle.existe ) y no ( kmlError ) entonces si Args [ L10n.para.from ] entonces kmlError = makeError ( L10n.str.err.bad_from , L10n.str.cat.error_from ) de lo contrario kmlError = makeError ( L10n.str.err.no_kml , L10n.str.cat.error_nokml ) fin fin wikiUrl = wikiTitle : fullUrl ( " action = raw " , " https " ) siteindex = 1 trackingWikitext = mw . ustring . format ( '<div title="KML y Wikidata" class="attached-kml-wikidata">KML no es de Wikidata</div>%s' , mw . title . getCurrentTitle (): enNamespace ( 0 ) y L10n . str . cat . local_kml o '' ) de lo contrario trackingWikitext = mw . ustring . format ( '<div title="KML y Wikidata" class="attached-kml-wikidata">KML es de Wikidata</div>%s' , mw . title . getCurrentTitle (): enNamespace ( 0 ) y L10n . str . cat . wikidata_kml o '' ) fin wikiTitle = mw . title . new ( wikiLink ) si wikiTitle . existe entonces transclusión local = wikiTitle : getContent () - hack para registrar la plantilla como transcluida. fin - reemplaza __KML_URL__ o __KML_URL_E__ con valores actuales local encodedWikiUrl = mw . uri . encode ( wikiUrl , "PATH" ) for i , v in ipairs ( externalLinks ) do local el1 = safeReplace ( v . link , "__KML_URL__" , wikiUrl ) local el2 = safeReplace ( el1 , "__KML_URL_E__" , encodedWikiUrl ) externalLinks [ i ][ "link" ] = el2 fin - suprime errores y categorías si el parámetro demo está configurado if Args [ L10n . para .demo ] entonces kmlError = nil trackingWikitext = "" end local wikitext = "" if Args [ L10n . párrafo . display ] luego display local = mw . texto . split ( Args [ L10n . para . display ], '%s*' .. L10n . str . dsep .. '%s*' ) if display [ 1 ] == L10n . cadena . título o pantalla [ 2 ] == L10n . cadena . título luego wikitext = makeTitleWikitext ( Args [ L10n . para . title ] o L10n . str . default_title , kmlError ) finaliza si muestra [ 1 ] == L10n . cadena . en línea o en pantalla [ 2 ] == L10n . cadena . en línea o ( mostrar [ 1 ] ~= L10n . str . title y mostrar [ 2 ] ~= L10n . str . title ) luego local inlineWikitext = makeInlineWikitext ( Args [ L10n . para . header ] o L10n . str . default_header , wikiUrl , kmlError ) wikitext = wikitext .. inlineWikitext end else wikitext = makeInlineWikitext ( Args [ L10n . para . header ] o L10n . str . default_header , wikiUrl , kmlError ) end wikitext = wikitext .. makeKmldataDiv ( wikiLink , siteindex ) .. trackingWikitext return frame : extensionTag { name = 'templatestyles' , args = { src = 'Module:KML/styles.css adjunto' } } . marco : preproceso ( wikitexto ) final retorno p .