Module:Interwiki extra/data: Difference between revisions
Appearance
Content deleted Content added
process data to use in Module:Interwiki |
raise an error if there is no url object or no host, and use "url" for the string and "urlObj" for the object |
||
Line 18: | Line 18: | ||
prefixData[k] = v |
prefixData[k] = v |
||
end |
end |
||
local |
local url = prefixData.url |
||
local urlObj = mw.uri.new( |
local urlObj = mw.uri.new(url) |
||
if not urlObj then |
|||
error(string.format( |
|||
"could not make URI object for prefix '%s'; " .. |
|||
"please check your wiki's interwiki data", |
|||
tostring(prefix) |
|||
⚫ | |||
end |
|||
prefixData.url = url |
|||
prefixData.urlObj = urlObj |
|||
prefixes[prefix] = prefixData |
prefixes[prefix] = prefixData |
||
Line 30: | Line 38: | ||
prefixData |
prefixData |
||
) |
) |
||
urlData.url = |
urlData.url = url |
||
urlData.urlObj = urlObj |
|||
urls[ |
urls[url] = urlData |
||
end |
end |
||
for |
for url, urlData in pairs(urls) do |
||
local host = urlData. |
local host = urlData.urlObj.host |
||
if host then |
if not host then |
||
error(string.format( |
|||
⚫ | |||
"could not find a host in URL '%s'; " .. |
|||
⚫ | |||
"please check your wiki's interwiki data", |
|||
⚫ | |||
tostring(url) |
|||
⚫ | |||
)) |
|||
urlText, |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end |
end |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
url, |
|||
⚫ | |||
) |
|||
⚫ | |||
⚫ | |||
end |
end |
||
Revision as of 01:34, 21 January 2015
-- This module processes data from mw.site.interwikiMap for use with
-- [[Module:Interwiki]]. By loading the data with mw.loadData we ensure that
-- this is only done once per page parse.
local prefixes, urls, hosts = {}, {}, {}
local function makeCountedData(t, storeKey, counterKey, itemKey, item)
t = t or {}
t[storeKey] = t[storeKey] or {}
t[storeKey][itemKey] = item
t[counterKey] = t[counterKey] and t[counterKey] + 1 or 1
return t
end
for prefix, data in pairs(mw.site.interwikiMap()) do
local prefixData = {}
for k, v in pairs(data) do
prefixData[k] = v
end
local url = prefixData.url
local urlObj = mw.uri.new(url)
if not urlObj then
error(string.format(
"could not make URI object for prefix '%s'; " ..
"please check your wiki's interwiki data",
tostring(prefix)
))
end
prefixData.url = url
prefixData.urlObj = urlObj
prefixes[prefix] = prefixData
local urlData = makeCountedData(
urls[urlText],
'prefixes',
'nPrefixes',
prefix,
prefixData
)
urlData.url = url
urlData.urlObj = urlObj
urls[url] = urlData
end
for url, urlData in pairs(urls) do
local host = urlData.urlObj.host
if not host then
error(string.format(
"could not find a host in URL '%s'; " ..
"please check your wiki's interwiki data",
tostring(url)
))
end
local hostData = makeCountedData(
hosts[host],
'urls',
'nUrls',
url,
urlData
)
hostData.host = host
hosts[host] = hostData
end
return {
prefixes = prefixes,
urls = urls,
hosts = hosts
}