Module:URL

From solab
Jump to navigation Jump to search

--require('string') ustring = require( 'ustring' )


--/usr/local/share/lua/5.1/socket.lua


--socket = _G.require("socket")

require('mw.uri')


require('mw.title')


--require('socket.http')

--local entity = mw.wikibase.getEntity()

local p = {}


function p.test()

   -- return string.format('[%s %s]', url, text)

x = mw.title.getCurrentTitle()


x = x

return x end


function trim(s)

   if s == nil then return  end
   return (s:gsub("^%s*(.-)%s*$", "%1"))

end

function startsWith(s, prefix)

   return (s:find(prefix, 1, true)) == 1

end

function split(s, sep) -- string split function for a single-character separator

   local ret = {}
   local n = 1
   for w in s:gmatch("([^" .. sep .. "]*)") do
       ret[n] = ret[n] or w  -- only set once (so the blank after a string is ignored)
       if w ==  then n = n + 1 end -- step forwards on a blank but not a string
   end
   return ret

end

function rest(tbl, start) -- get the elements of the table beginning at the specified starting index

   local ret = {}
   if start > #tbl then
       return ret
   end
   for i = start, #tbl do
       ret[i - start + 1] = tbl[i]
   end
   return ret

end

function p._url(url, text)

   local lcUrl = url:lower()
   if not startsWith(lcUrl, 'http://') and not startsWith(lcUrl, 'https://') and not startsWith(lcUrl, 'ftp://') then
       url = 'http://' .. url
   end

   if text ==  then
       local comps = split(url, '/')
       local host = comps[3]:lower()
       local path = table.concat(rest(comps, 4), '/')

       text = host
       if path ~=  then
           text = text .. '/' .. path
       end
   end

   return string.format('[%s %s]', url, text)

end

function p.url(frame)

   local url = trim(frame.args[1])
   local text = trim(frame.args[2])

   if url ==  then
       return frame:expandTemplate{ title = 'tlx', args = { 'URL', "example.com", "optional display text" } }
   end

   return p._url(url, text)

end

return p