Mô đun:URL

---Mô đun này hỗ trợ {{URL}}.
--
-- Xem các trường hợp kiểm thử đơn vị tại [[Module:URL/tests]].

local p = {}
 
function trim(s)
    return (mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1"))
end

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 = trim(url or '')
    text = trim(text or '')
    
    if url == '' then
        if text == '' then
            return mw.getCurrentFrame():expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''văn bản hiển thị tùy chọn''" } }
        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 '')
        else -- URL is badly-formed, so just display whatever was passed in
            text = url
        end
    end
-- 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")
    return mw.ustring.format('<span class="url">[%s %s]</span>', url, text)
end

function p.url(frame)
    local templateArgs = frame.args
    local url = templateArgs[1] or ''
    local text = templateArgs[2] or ''
    return p._url(url, text)
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.
--]]
function p.url2(frame)
	local templateArgs = frame.args
	local parentArgs = frame:getParent().args
	local url = templateArgs[1] or parentArgs[1]
	local text = templateArgs[2] or parentArgs[2] or ''
	-- default to no message
	local msg = templateArgs.msg or parentArgs.msg or 'no'
	url = url or extractUrl(templateArgs) or extractUrl(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.
	local u1, penicon = mw.ustring.match( url, "(.*)(&nbsp;<span class='penicon.*)" )
	if penicon then url = u1 end
	-- strip out html tags and [ ] from url
	url = (url or ''):gsub("<[^>]*>", ""):gsub("[%[%]]", "")
	-- truncate anything after a space
	url = url:gsub("%%20", " "):gsub(" .*", "")
	return (p._url(url, text, msg) or "") .. (penicon or "")
end

return p
Chúng tôi bán
Bài viết liên quan
Sự khác biệt về mặt
Sự khác biệt về mặt "thông số" của Rimuru giữa hai phiên bản WN và LN
Những thông số khác nhau giữa 2 phiên bản Rimuru bản Web Novel và Light Novel
Download anime Azur Lane Vietsub
Download anime Azur Lane Vietsub
Một hải quân kỳ lạ với một sức mạnh lớn dưới cái tên là Siren đã bất ngờ xuất hiện
Đức Phật Thích Ca trong Record of Ragnarok
Đức Phật Thích Ca trong Record of Ragnarok
Buddha là đại diện của Nhân loại trong vòng thứ sáu của Ragnarok, đối đầu với Zerofuku, và sau đó là Hajun, mặc dù ban đầu được liệt kê là đại diện cho các vị thần.
Một chút đọng lại về
Một chút đọng lại về " Chiến binh cầu vồng"
Nội dung cuốn sách là cuộc sống hàng ngày, cuộc đấu tranh sinh tồn cho giáo dục của ngôi trường tiểu học làng Muhammadiyah với thầy hiệu trưởng Harfan