[editar] [

Version check
Designación de la versión en Wikidata: 2023-12-08
Uso
This module provides functions to check and link Email adresses.
Examples
Text | Code | Ergebnis |
---|---|---|
[email protected] | {{#invoke:LinkMail|linkMails|[email protected]}} | [email protected] |
café@xyz.hotel.com | {{#invoke:LinkMail|linkMails|café@xyz.hotel.com}} | café@xyz.hotel.com Category:Contacto: El correo electrónico contiene caracteres Unicode |
[email protected] (Information) | {{#invoke:LinkMail|linkMails|[email protected] (Information)}} | [email protected] (Information) |
[email protected], [email protected] | {{#invoke:LinkMail|linkMails|[email protected], [email protected]}} | [email protected], [email protected] |
info@$xyz.hotel.com | {{#invoke:LinkMail|linkMails|info@$xyz.hotel.com}} | info@$xyz.hotel.com Category:Contacto: Formato de correo electrónico inválido Formato de correo electrónico inválido |
Esta documentación es transcluida desde Módulo:LinkMail/doc.
Los editores pueden experimentar en la zona de pruebas de la plantilla.
Por favor, añade las categorías a la subpágina de documentación. Subpáginas de esta plantilla.
Los editores pueden experimentar en la zona de pruebas de la plantilla.
Por favor, añade las categorías a la subpágina de documentación. Subpáginas de esta plantilla.
-- module variable and administration local lm = { moduleInterface = { suite = 'LinkMail', serial = '2023-12-08', item = 65157414 } } -- module import -- require( 'strict' ) local li = require( 'Module:Link utilities/i18n' ) local lu = require( 'Module:Link utilities' ) -- check single email address function lm._isEmail( s ) local result = 2 if s == nil or type( s ) ~= 'string' or #s > 254 or s:find( '%s' ) or s:find( '%.%.' ) or s:find( '%.@' ) or s:find( '@[%.%-]' ) or s:find( '%-%.' ) or s:find( '%.%-' ) or s:match( '^%.' ) then return 0 end local repl, at = s:gsub( '@', '@' ) if at ~= 1 then return 0 end at = s:find( '@' ) local user = s:sub( 1, at - 1 ) local domain = s:sub( at + 1, #s ) if not user or not domain or #user > 64 or #domain > 253 then return 0 end -- handle user part if not mw.ustring.match( user, "^[%w!#&'/=_`{|}~%^%$%%%+%-%*%.%?]+$" ) then return 0 end if not user:match( "^[%w!#&'/=_`{|}~%^%$%%%+%-%*%.%?]+$" ) then result = 1 end -- handle domain part if not mw.ustring.match( domain, '^[%w%.%-]+%.%a%a+$' ) then return 0 end if not domain:match( '^[%w%.%-]+%.%a%a+$' ) then result = 1 end -- not yet analysed: texts in quotes in user part -- added on demand return result end function lm._linkMail( m, isDemo, ignoreUnicode ) m = mw.text.trim( m ) if m == '' then return '' end local catPrefix = '[[Category:' if isDemo then catPrefix = ' [[:Category:' end local comment = '' m, comment = lu.extractComment( m ) m = m:gsub( 'mailto:', '' ) local isEmail = lm._isEmail( m ) local t if isEmail > 0 then t = '<span class="plainlinks nourlexpansion">[mailto:' .. m .. ' ' .. m .. ']</span>' if isEmail == 1 and not ignoreUnicode then t = t .. catPrefix .. li.categories.nonASCII end else t = m .. catPrefix .. li.categories.invalidMail end if comment ~= '' then t = t .. ' ' .. comment end return t end function lm.linkMailSet( args ) args.email = args.email or args[ 1 ] or '' if args.email == '' then return '' end local ns = mw.title.getCurrentTitle().namespace local isDemo = ns == 10 or ns == 828 -- split separate email local items = lu.splitItems( args.email, li.delimiters ) -- analyse emails local result = '' local i = 0 local s for j, item in ipairs( items ) do s = lm._linkMail( item, isDemo, args.ignoreUnicode ) if s ~= '' then if result == '' then result = s else if i == li.addMail then result = result .. '<span class="listing-add-contact">' end result = result .. li.texts.comma .. s end i = i + 1 end end if i > li.addMail then result = result .. '</span>' end return result end -- #invoke call function lm.linkMails( frame ) return lm.linkMailSet( frame.args ) end -- template call function lm.linkMailsTemplate( frame ) return lm.linkMailSet( frame:getParent().args ) end return lm