stringtranslate.com

Módulo:URL

-- -- Este módulo implementa {{URL}} -- -- Ver pruebas unitarias en [[Módulo:URL/casosdeprueba]] local p = {} función local safeUri ( s ) éxito local, uri = pcall ( función () devolver mw.uri.new ( s ) fin ) si éxito entonces devolver uri fin fin función local extractUrl ( args ) para nombre , val en pares ( args ) hacer si nombre ~ = 2 y nombre ~ = " msg " entonces url local = nombre .. " = " .. val ; url = mw.ustring.gsub ( url , ' ^ [ Hh ] [ Tt ] [ Tt ] [ Pp ] ( [ Ss ] ? ):(/?)([^/])' , ' http % 1 : //%3' ) uri local = safeUri ( url ) ; si uri y uri.host entonces devolver url fin fin fin fin función p . _url ( url , texto , msg ) url = mw . texto . trim ( url o '' ) texto = mw . texto . trim ( texto o '' ) nomsg local = ( msg o '' ): sub ( 1 , 1 ): lower () == "n" o msg == 'false' -- booleano: verdadero si msg es "falso" o comienza con n o N si url == '' entonces si texto == '' entonces si nomsg                                                                                 entonces devuelve nil de lo contrario devuelve mw . getCurrentFrame (): expandTemplate { title = 'tlx' , args = { 'URL' , "''example.com''" , "''texto de visualización opcional''" } } fin de lo contrario devuelve texto fin fin -- Si la URL contiene espacios sin codificar, codifíquelos, porque de lo contrario MediaWiki interpretará un espacio como el final de la URL. url = mw . ustring . gsub ( url , '%s' , function ( s ) return mw . uri . encode ( s , 'PATH' ) fin ) -- Si hay una cadena de consulta vacía o un id de fragmento, elimínelo ya que hará que mw.uri.new genere un error url = mw . ustring . gsub ( url , '#$' , '' ) url = mw . ustring . gsub ( url , '%?$' , '' ) - Si es una URL HTTP[S] sin la barra doble, corríjala. url = mw . ustring . gsub ( url , '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])' , 'http%1://%3' ) local uri = safeUri ( url ) - Maneja URL sin un protocolo y URL que son relativas al protocolo, por ejemplo www.example.com/foo o www.example.com:8080/foo, y //www.example.com/foo if uri and ( not uri . protocol or ( uri . protocol and not uri . host )) and url : sub ( 1 , 2 ) ~= '//' then url = 'http://' ..url uri = safeUri ( url ) fin                                                          si  texto  ==  ''  entonces si uri entonces si uri . ruta == '/' entonces uri . ruta = '' fin puerto local = '' si uri . puerto entonces puerto = ':' .. uri . puerto fin texto = mw . ustring . lower ( uri . host o '' ) .. puerto .. ( uri . relativePath o '' ) -- Agregar <wbr> antes de secuencias _/.-# texto = mw . ustring . gsub ( texto , "(/+)" , "<wbr/>%1" ) -- Esta entrada DEBE ser la primera. "<wbr/>" tiene un "/" en él, ya sabes. texto = mw . ustring . gsub ( texto , "(%.+)" , "<wbr/>%1" ) -- texto = mw. ustring. gsub(texto,"(%-+)","<wbr/>%1") -- DESHABILITADO por ahora texto = mw . ustring . gsub ( text , "(%#+)" , "<wbr/>%1" ) text = mw . ustring . gsub ( text , "(_+)" , "<wbr/>%1" ) else -- La URL está mal formada, por lo que solo se muestra lo que se pasó en text = url end end return mw . ustring . format ( '<span class="url">[%s %s]</span>' , url , text ) end --[[ El punto de entrada principal para llamar desde Template:URL. --]] function p . url ( frame ) local templateArgs = frame .argumentos locales parentArgs = marco : getParent (). args local                                                      url  =  templateArgs [ 1 ]  o  parentArgs [ 1 ] local text = templateArgs [ 2 ] o parentArgs [ 2 ] o '' local msg = templateArgs . msg o parentArgs . msg o '' url = url o extractUrl ( templateArgs ) o extractUrl ( parentArgs ) o '' return p . _url ( url , text , msg ) end --[[ El punto de entrada para llamar desde la plantilla bifurcada Template:URL2. Esta función no devuelve ningún mensaje de forma predeterminada. Elimina el marcado de enlaces wiki, las etiquetas html y todo lo que aparece después de un espacio. --]] function p . url2 ( frame ) local templateArgs = frame . args local parentArgs = frame : getParent (). args local url = templateArgs [ 1 ] o parentArgs [ 1 ] local text = templateArgs [ 2 ] o parentArgs [ 2 ] o '' -- por defecto no hay mensaje local msg = templateArgs . msg o parentArgs . msg o 'no' url = url o extractUrl ( templateArgs ) o extractUrl ( parentArgs ) o '' -- si la URL proviene de una llamada de Wikidata, puede tener un ícono de lápiz adjunto -- queremos mantenerlo y agregarlo nuevamente al final. local u1 , penicon = mw . ustring . match ( url , "(.*)( <span class='penicon.*)" )                                                                  if  penicon  then  url  =  u1  end -- elimina las etiquetas html y [ ] de la url url = ( url o '' ): gsub ( "<[^>]*>" , "" ): gsub ( "[%[%]]" , "" ) -- trunca cualquier cosa después de un espacio url = url : gsub ( "%%20" , " " ): gsub ( " .*" , "" ) return ( p . _url ( url , text , msg ) o "" ) .. ( penicon o "" ) end return p