More languages
More actions
(Adding actual comparator function now and sorting tables before presenting them) |
(Leaving commented code as basis for future function) |
||
Line 37: | Line 37: | ||
table.sort(titleTable,compareStrings) | table.sort(titleTable,compareStrings) | ||
return {links=linkTable,titles=titleTable} | return {links=linkTable,titles=titleTable} | ||
end | |||
function getYearFromTitle(title) | |||
-- mw.logObject(mw.getCurrentFrame():callParserFunction("#dpl","title=Library:Vladimir_Lenin/Role_and_functions_of_the_trade_unions_under_the_New_Economic_Policy", "include={Library work}:published_date", "format=,,")) | |||
end | end | ||
Line 45: | Line 49: | ||
local link = checkset(parentFrame.args.link) | local link = checkset(parentFrame.args.link) | ||
local author = checkset(parentFrame.args.author) | local author = checkset(parentFrame.args.author) | ||
local work = checkset(parentFrame.args.work) | |||
-- error("error message") to send error messages | -- error("error message") to send error messages | ||
-- mw.log(mw.getCurrentFrame():callParserFunction("#dpl","namespace=Library","titleregexp=Vladimir Lenin/[^/]+$","format=,%PAGE%\\n")) | -- mw.log(mw.getCurrentFrame():callParserFunction("#dpl","namespace=Library","titleregexp=Vladimir Lenin/[^/]+$","format=,%PAGE%\\n")) |
Revision as of 13:23, 7 October 2024
local p = {}
local function checkset(var)
local rtn = ""
if not (var == nil or var == '') then
rtn = var
end
return rtn
end
local function removeApostrophes(str)
return str:gsub("[\"'%`]", "")
end
local function compareStrings(a,b)
local stringA = removeApostrophes(a):lower()
local stringB = removeApostrophes(b):lower()
return stringA < stringB
end
function listOfWorks(author)
local newMethod = mw.getCurrentFrame():callParserFunction("#dpl","namespace=Library","titleregexp=" .. author .. "/[^/]+$","format=,%TITLE%\\n")
local catMethod = mw.getCurrentFrame():callParserFunction("#dpl","namespace=Library","category=Library works by " .. author ,"format=,%TITLE%\\n")
local list = ""
-- Picks whatever method of recovering pages has the higher count, usually categories
if string.len(newMethod) > string.len(catMethod) then
list = newMethod
else
list = catMethod
end
titleTable = mw.text.split(string.gsub(mw.text.trim(list),author .. "/",""),"\n")
linkTable=mw.text.split(mw.text.trim(list),"\n")
for i,v in ipairs(linkTable) do
linkTable[i] = "Library:" .. v
end
table.sort(linkTable,compareStrings)
table.sort(titleTable,compareStrings)
return {links=linkTable,titles=titleTable}
end
function getYearFromTitle(title)
-- mw.logObject(mw.getCurrentFrame():callParserFunction("#dpl","title=Library:Vladimir_Lenin/Role_and_functions_of_the_trade_unions_under_the_New_Economic_Policy", "include={Library work}:published_date", "format=,,"))
end
function p.cite(frame)
-- Parent frame to get parameters from template calls instead of from {{#invoke: ...
local parentFrame = frame:getParent()
-- get arguments from "args" table pre-defined by MediaWiki/Scribunto
local link = checkset(parentFrame.args.link)
local author = checkset(parentFrame.args.author)
local work = checkset(parentFrame.args.work)
-- error("error message") to send error messages
-- mw.log(mw.getCurrentFrame():callParserFunction("#dpl","namespace=Library","titleregexp=Vladimir Lenin/[^/]+$","format=,%PAGE%\\n"))
-- mw.log(mw.getCurrentFrame():callParserFunction("#dpl","namespace=Library","category=Library works by Vladimir Lenin","format=,%PAGE%\\n"))
return listOfWorks(author)
end
return p