Module:URL
- Afrikaans
- Алтай тил
- አማርኛ
- Ænglisc
- Аԥсшәа
- العربية
- Aragonés
- Արեւմտահայերէն
- Arpetan
- অসমীয়া
- Asturianu
- Avañe'ẽ
- Авар
- Azərbaycanca
- تۆرکجه
- Basa Bali
- বাংলা
- Banjar
- 閩南語 / Bân-lâm-gí
- Basa Banyumasan
- Башҡортса
- Беларуская
- Беларуская (тарашкевіца)
- भोजपुरी
- Bikol Central
- Български
- Boarisch
- Bosanski
- Brezhoneg
- Буряад
- Чӑвашла
- Cebuano
- Čeština
- Chamoru
- Corsu
- Dansk
- الدارجة
- Ελληνικά
- Эрзянь
- Español
- Esperanto
- Euskara
- فارسی
- Fiji Hindi
- Føroyskt
- Français
- Fulfulde
- Gaeilge
- Galego
- ГӀалгӀай
- 贛語
- گیلکی
- ગુજરાતી
- गोंयची कोंकणी / Gõychi Konknni
- 客家語 / Hak-kâ-ngî
- 한국어
- Hausa
- Հայերեն
- हिन्दी
- Hrvatski
- Ido
- Ilokano
- Bahasa Indonesia
- Ирон
- IsiZulu
- Íslenska
- עברית
- Jawa
- ಕನ್ನಡ
- ქართული
- Қазақша
- Коми
- Kurdî
- Кыргызча
- Кырык мары
- Ladin
- Лакку
- ລາວ
- Latgaļu
- Latviešu
- Lietuvių
- Livvinkarjala
- Madhurâ
- Македонски
- Malagasy
- മലയാളം
- मराठी
- مصرى
- ဘာသာမန်
- Bahasa Melayu
- Minangkabau
- 閩東語 / Mìng-dĕ̤ng-ngṳ̄
- Mirandés
- Мокшень
- Монгол
- မြန်မာဘာသာ
- Nāhuatl
- Nederlands
- नेपाली
- नेपाल भाषा
- 日本語
- Нохчийн
- Norsk bokmål
- Norsk nynorsk
- Олык марий
- ଓଡ଼ିଆ
- Oʻzbekcha / ўзбекча
- ਪੰਜਾਬੀ
- Pangasinan
- پښتو
- Português
- Qaraqalpaqsha
- Română
- Русиньскый
- Русский
- Саха тыла
- Sakizaya
- संस्कृतम्
- ᱥᱟᱱᱛᱟᱲᱤ
- سرائیکی
- Scots
- Setswana
- සිංහල
- Simple English
- سنڌي
- Slovenščina
- کوردی
- Српски / srpski
- Srpskohrvatski / српскохрватски
- Sunda
- Suomi
- Svenska
- Tagalog
- தமிழ்
- Татарча / tatarça
- တႆး
- తెలుగు
- ไทย
- ትግርኛ
- Тоҷикӣ
- Türkçe
- Türkmençe
- Удмурт
- Українська
- اردو
- Tiếng Việt
- Volapük
- Winaray
- 吴语
- ייִדיש
- 粵語
- 中文
- Kumoring
- ꠍꠤꠟꠐꠤ
- Tolışi
Appearance
From Wikipedia, the free encyclopedia
[画像:Warning] This Lua module is used in MediaWiki:Titleblacklist-custom-URL , and on approximately 644,000 pages, or roughly 1% of all pages.
Changes to it can cause immediate changes to the Wikipedia user interface.
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them.
Changes to it can cause immediate changes to the Wikipedia user interface.
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them.
This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing.
Page template-protected This module is currently protected from editing.
See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected.
See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected.
This module implements {{URL }} and {{URL2 }}. Please see the template page for documentation.
Lua interface
The p._url(url, text, msg)
function may be used by other Lua modules. It returns a formatted Wikitext for the given URL, made suitable for line wrapping using . It takes the following parameters:
- url
- REQUIRED. The URL to format.
- text
- OPTIONAL. Display text to put in the Wikitext link. Defaults to a pretty version of the URL.
- msg
- OPTIONAL. String. If content is false, n or N, do not emit a help message (using
{{tlx}}
) when URL is not given.
Example
The following module emits a prettified link to log the user out. It will wrap correctly to most widths.
localurl=require('Module:URL')._url localp={} p.main=function(frame) returnurl("https://en.wikipedia.org/wiki/Special:UserLogout") end returnp
See also
- {{#invoke:WikidataIB|url2}} – a simpler version which only allows one value
The above documentation is transcluded from Module:URL/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Subpages of this module.
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Subpages of this module.
-- -- This module implements {{URL}} -- -- See unit tests at [[Module:URL/testcases]] localp={} localfunctionsafeUri(s) localsuccess,uri=pcall(function() returnmw.uri.new(s) end) ifsuccessthen returnuri end end localfunctionextractUrl(args) forname,valinpairs(args)do ifname~=2andname~="msg"then localurl=name.."="..val; url=mw.ustring.gsub(url,'^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])','http%1://%3') localuri=safeUri(url); ifurianduri.hostthen returnurl end end end end functionp._url(url,text,msg) url=mw.text.trim(urlor'') text=mw.text.trim(textor'') localnomsg=(msgor''):sub(1,1):lower()=="n"ormsg=='false'-- boolean: true if msg is "false" or starts with n or N ifurl==''then iftext==''then ifnomsgthen returnnil else returnmw.getCurrentFrame():expandTemplate{title='tlx',args={'URL',"''example.com''","''optional display text''"}} end else returntext end end -- If the URL contains any unencoded spaces, encode them, because MediaWiki will otherwise interpret a space as the end of the URL. url=mw.ustring.gsub(url,'%s',function(s)returnmw.uri.encode(s,'PATH')end) -- If there is an empty query string or fragment id, remove it as it will cause mw.uri.new to throw an error url=mw.ustring.gsub(url,'#$','') url=mw.ustring.gsub(url,'%?$','') -- If it's an HTTP[S] URL without the double slash, fix it. url=mw.ustring.gsub(url,'^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])','http%1://%3') localuri=safeUri(url) -- Handle URL's without a protocol and URL's that are protocol-relative, -- e.g. www.example.com/foo or www.example.com:8080/foo, and //www.example.com/foo ifuriand(noturi.protocolor(uri.protocolandnoturi.host))andurl:sub(1,2)~='//'then url='http://'..url uri=safeUri(url) end iftext==''then ifurithen ifuri.path=='/'thenuri.path=''end localport='' ifuri.portthenport=':'..uri.portend text=mw.ustring.lower(uri.hostor'')..port..(uri.relativePathor'') -- Add <wbr> before _/.-# sequences text=mw.ustring.gsub(text,"(/+)","<wbr/>%1")-- This entry MUST be the first. "<wbr/>" has a "/" in it, you know. text=mw.ustring.gsub(text,"(%.+)","<wbr/>%1") -- text = mw.ustring.gsub(text,"(%-+)","<wbr/>%1") -- DISABLED for now text=mw.ustring.gsub(text,"(%#+)","<wbr/>%1") text=mw.ustring.gsub(text,"(_+)","<wbr/>%1") else-- URL is badly-formed, so just display whatever was passed in text=url end end returnmw.ustring.format('<span class="url">[%s %s]</span>',url,text) end --[[ The main entry point for calling from Template:URL. --]] functionp.url(frame) localtemplateArgs=frame.args localparentArgs=frame:getParent().args localurl=templateArgs[1]orparentArgs[1] localtext=templateArgs[2]orparentArgs[2]or'' localmsg=templateArgs.msgorparentArgs.msgor'' url=urlorextractUrl(templateArgs)orextractUrl(parentArgs)or'' returnp._url(url,text,msg) end --[[ The entry point for calling from the forked Template:URL2. This function returns no message by default. It strips out wiki-link markup, html tags, and everything after a space. --]] functionp.url2(frame) localtemplateArgs=frame.args localparentArgs=frame:getParent().args localurl=templateArgs[1]orparentArgs[1] localtext=templateArgs[2]orparentArgs[2]or'' -- default to no message localmsg=templateArgs.msgorparentArgs.msgor'no' url=urlorextractUrl(templateArgs)orextractUrl(parentArgs)or'' -- if the url came from a Wikidata call, it might have a pen icon appended -- we want to keep that and add it back at the end. localu1,penicon=mw.ustring.match(url,"(.*)( <span class='penicon.*)") ifpeniconthenurl=u1end -- strip out html tags and [ ] from url url=(urlor''):gsub("<[^>]*>",""):gsub("[%[%]]","") -- truncate anything after a space url=url:gsub("%%20"," "):gsub(" .*","") return(p._url(url,text,msg)or"")..(peniconor"") end returnp