Module:Sandbox/WikiJunkie explained

-- Beta functions getname2 and getinternal links

local p =

local function loadwikinames local wikinames = wikinames[1] = "wikisource" wikinames[2] = "wikibooks" wikinames[3] = "wikinews" wikinames[4] = "wikiquote" wikinames[5] = "wikivoyage" wikinames[6] = "wiki" return wikinamesend

function p.getname(frame) local name=mw.wikibase.getEntityIdForTitle(frame.args[1]) if name

"" or name

nil then return "" end return name end

function p.getname2(frame) local names=frame.args[1] local name = "" local image = "" local items = local index = 1 local id = "" local latitude = local longitude = local marker = local entity = local data = "" local separator = '\n' local lang = local wiki = local wikiname = for str in string.gmatch(names,"([^"..separator.."]+)") do if str ~= nil and str ~= "" then str = string.gsub(str,"^%s+","") str = string.gsub(str,"%s+$","") if str ~= "" then items[index] = str index = index + 1 end end end

for i=1,#items do name = items[i] id = "" wikiname = id=mw.wikibase.getEntityIdForTitle(items[i]) if id

nil then id = end if id ~= nil and id ~= then entity = mw.wikibase.getEntityObject(id)

if entity

nil then latitude = "" longitude = "" end local claims = entity.claims if claims

nil then latitude = "" longitude = "" end -- if claims.P625 ~= nil thenif pcall(function t =claims.P625 end) then if pcall(function t =entity.claims.P625[1].mainsnak.datavalue.value.latitude end) then latitude = entity.claims.P625[1].mainsnak.datavalue.value.latitude else latitude = "" end if pcall(function t =entity.claims.P625[1].mainsnak.datavalue.value.longitude end) then longitude = entity.claims.P625[1].mainsnak.datavalue.value.longitude else longitude = "" endend

-- if claims.P18 ~= nil then-- image = entity.claims.P18[1].mainsnak.datavalue.value-- if image

nil then-- image = ""---- Replace above due to error of getting a nil value-- Lua error in line 3210: attempt to index field 'datavalue' (a nil value).image=""if pcall(function t =claims.P625 end) then if pcall(function t =entity.claims.P18[1].mainsnak.datavalue.value end) then image = entity.claims.P18[1].mainsnak.datavalue.value else image = "" end

end

end

wikiname = "" lang = mw.language.getContentLanguage(id).code wiki = lang .. "wiki" if pcall(functiont1 = entity:getSitelink("wiki") end) then wikiname = entity:getSitelink(wiki) or "" else wikiname = "" end

if id

"" then wikiname = "" endif id ~= nil and id ~= "" then name = "" .. name .. ""end marker = '*

" data = data .. marker .. "\n" marker = name = latitude = longitude = image= id = wikiname = end return data end

-- Load a page and scan it for internal links

function p.getinternallinks(frame) local page = frame.args[1] or "Main Page" local title = mw.title.new(page) local displayactual = frame.args['option'] or "yes" if title

nil then return end

if title.id

0 then return "Page does not exist!" end

local data = title:getContent if data

nil or data

"" then return end

local tt = local count = 0 local output = "" local separator = "@@@@@" local newstr = ""

data = string.gsub(data,"\n","@@@@@") --change \n to separator @@@@@ data = string.gsub(data,"@","BULLET") --because I use @@@@@ as a separator changing @ to BULLET data = string.gsub(data,"%s+"," ") --change multiple spaces to a space data = string.gsub(data,"%[%[","@@@@@[[") --change [[ to separator @@@@@[[ data = string.gsub(data,"%]%]","]]@@@@@") --change ]] to separator ]]@@@@@ data = string.gsub(data,"@@@@@@@@@@","@@@@@") --change ]] to separator ]]@@@@@

for str in string.gmatch(data,"([^"..separator.."]+)") do

if str ~= nil and str ~= "" then

-- Get rid of File,file,Image,image str = string.gsub(str,"%[%[[fF]ile.*",) str = string.gsub(str,"%[%[[iI]mage.*",)

str = string.gsub(str,'%s*$',) -- drop ending space str = string.gsub(str,'^%s+',) if string.find(str, '^%[%[') == 1 then -- Key is to have [[ at beginning str = string.gsub(str,'%_'," ") str = string.gsub(str,'%%2C',",") str = string.gsub(str,'%s+%|%s+','|') str = string.gsub(str,'%[%[%#','[[' .. page .. '#') -- Display only actual link make it an option if displayactual == "yes" then str = string.gsub(str,"%|.*%]%]","]]")end count = count + 1-- localstr = str.gsub(str,'^.*|',) localstr = str.gsub(str,'|.*',) localstr = string.upper (localstr)

tt[count] = localstr .. "@-@" .. str end end end

table.sort(tt) local previous = ""

for key,value in pairs(tt) dovalue = string.gsub(value,'^.*@-@',) if value ~= previous then output = output .. value .. " -- " end previous = value end

output = string.gsub(output,"BULLET","@") output = string.gsub(output," -- $","") return outputend

return p