Difference between revisions of "Module:URL"
Jump to navigation
Jump to search
imported>Toohool (Lua implementation of {{URL}}) |
imported>Toohool (fix for omitted URL parameter) |
||
Line 56: | Line 56: | ||
if url == '' then | if url == '' then | ||
− | return frame:expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''optional display text''" } } | + | if text == '' then |
+ | return frame:expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''optional display text''" } } | ||
+ | else | ||
+ | url = text | ||
+ | end | ||
end | end | ||
Revision as of 04:31, 22 February 2013
Documentation for this module may be created at Module:URL/doc
local p = {} 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('<span class="url">[%s %s]</span>', url, text) end function p.url(frame) local url = trim(frame.args[1]) local text = trim(frame.args[2]) if url == '' then if text == '' then return frame:expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''optional display text''" } } else url = text end end return p._url(url, text) end return p