Module:InfoboxVGE

From blackwiki
Revision as of 12:49, 19 September 2020 by Blackwikiadmin (talk | contribs) (84 revisions imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
local p = {}

local function delinkWikilink(s)
    local result = s
    -- Deal with the reverse pipe trick.
    if result:match("%[%[|") then
        return delinkReversePipeTrick(result)
    end
    
    result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
    result = mw.text.decode(result, true) -- decode HTML entities.
    
    -- Check for bad titles. To do this we need to find the
    -- title area of the link, i.e. the part before any pipes.
    local titlearea
    if result:match("|") then -- Find if we're dealing with a piped link.
        titlearea = result:match("^%[%[(.-)|.*%]%]")
    else
        titlearea = result:match("^%[%[(.-)%]%]")
    end
    -- Check for bad characters.
    if mw.ustring.match(titlearea, "[%[%]<>{}%%%c\n]") then
        return s
    end
    
    -- Check for categories, interwikis, and files.
    local colonprefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon.
    local ns = mw.site.namespaces[colonprefix] -- see if this is a known namespace
    if mw.language.isKnownLanguageTag(colonprefix)
    or ( ns and ( ns.canonicalName == "File" or ns.canonicalName == "Category" ) ) then
        return ""
    end
    
    -- Remove the colon if the link is using the [[Help:Colon trick]].
    if result:match("%[%[:") then
        result = "[[" .. result:match("%[%[:(.*%]%])")
    end
    
    -- Deal with links using the [[Help:Pipe trick]].
    if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then
        return delinkPipeTrick(result)
    end
    
    -- Find the display area of the wikilink
    if result:match("|") then -- Find if we're dealing with a piped link.
        result = result:match("^%[%[.-|(.+)%]%]")
        -- Remove new lines from the display of multiline piped links,
        -- where the pipe is before the first new line.
        result = result:gsub("\n", "")
    else
        result = result:match("^%[%[(.-)%]%]")
    end

    return result
end


function p.GetFirstGameEntity( frame )
	args = require('Module:Arguments').getArgs(frame, {
			wrappers = 'Template:Infobox video game engine'
		})
	
	local title = delinkWikilink(args["first title"])
	local id = mw.wikibase.getEntityIdForTitle(title)
	if(mw.wikibase.getEntity(id)["P31"] == "Q7889") then
		id = mw.wikibase.getEntityIdForTitle(title .. ' (video game)')
	end
	return id
end 

function p.GetLatestGameEntity( frame )
	args = require('Module:Arguments').getArgs(frame, {
			wrappers = 'Template:Infobox video game engine'
		})
	
	local title = delinkWikilink(args["latest title"])
	local id = mw.wikibase.getEntityIdForTitle(title)
	return id
end 

return p