-- 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
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
if entity
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
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
" 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
if title.id
local data = title:getContent if 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