Url

Documentation for this module may be created at ماڊيول:URL/doc

-- -- This module implements {{URL}} -- -- See unit tests at [[Module:URL/tests]]  local p = {}   local function safeUri(s)     local success, uri = pcall(function()         return mw.uri.new(s)     end)     if success then         return uri     end end  function p._url(url, text)     url = mw.text.trim(url or '')     text = mw.text.trim(text or '')          if url == '' then         if text == '' then             return mw.getCurrentFrame():expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''optional display text''" } }         else             return text         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) return mw.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')      -- Handle URLs from Wikidata of the format http://     url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://')          local uri = 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     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)     end          if text == '' then         if uri then             if uri.path == '/' then uri.path = '' end                          local port = ''             if uri.port then port = ':' .. uri.port end                          text = mw.ustring.lower(uri.host or '') .. port .. (uri.relativePath or '')  -- Add  before _/.-# sequences text = mw.ustring.gsub(text,"(/+)","%1")      -- This entry MUST be the first. "" has a "/" in it, you know. text = mw.ustring.gsub(text,"(%.+)","%1") -- text = mw.ustring.gsub(text,"(%-+)","%1") -- DISABLED for now text = mw.ustring.gsub(text,"(%#+)","%1") text = mw.ustring.gsub(text,"(_+)","%1")         else -- URL is badly-formed, so just display whatever was passed in             text = url         end     end      return mw.ustring.format('[%s %s]', url, text) end  function p.url(frame)     local templateArgs = frame.args local parentArgs = frame:getParent().args;     local url = templateArgs[1] or parentArgs[1] or ''     local text = templateArgs[2] or parentArgs[2]     if not text then     url = url or extractUrl(templateArgs) or extractUrl(parentArgs); end text = text or ''     return p._url(url, text) end function extractUrl(args) for name, val in pairs(args) do local url = name .. "=" .. val; url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3') local uri = safeUri(url); if uri and uri.host then return url end end end return p 

Tags:

🔥 Trending searches on Wiki سنڌي، سندھی ، सिन्ध:

اُرڙيپورچوگيزي ٻوليبليڪ هولسنڌي شاعري2009عسعودي عرب جي صوبن جي فهرستشمارياتلاس اينجلسٽونگاھائڊروجنوينيزويلااسراريتپوڊڪاسٽايم اين رائيمارڪيٽ (جڳھ)گلاسگوجي آء ايفوي بيڪ مشينروون اٽڪنسنريل گاڏياڪنگر ڪوٽعيسيٰعباس ڪوريجوضآتش پرستيپنگتي تڪرارلينڪسزپوريزيالکتاکل ڀارت سنڌي ٻولي ۽ ساھت سڀاهوتچند مولچند گربخشاڻيبدنودلسنڌي ادبي بورڊعظيم برطانيا ۽ آئرلينڊ جي گڏيل بادشاھتعلي رضا سولنگيپاڪستان ۾ گهڻيون زالون پرڻجڻ جو رواجقيامت جون نشانيونصلاح الدين ايوبيمٽيايڪڙحرف جملوشِونارويبريمن1296عمچيل ڊيل1938عاولمپڪ رانديونھيٺيون دير ضلعوڪاري ڊاکڪارو ڪاريواڱڻ1926عسارڪاگنيسنڌو ماٿريءَ جي تھذيبآسٽريليا جا شاھي سربراھآرتميسشمس الدين التمششاهه عنايت شهيدمدي جو تپڦاروا (ميوو)آرڪيئاڪاڇونبي بخش بلوچ🡆 More