Module:InterviewNavbox: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary |
No edit summary |
||
Line 34: | Line 34: | ||
titleGroup[titleWithoutDate] = titleGroup[titleWithoutDate] or {} |
titleGroup[titleWithoutDate] = titleGroup[titleWithoutDate] or {} |
||
table.insert(titleGroup[titleWithoutDate], {interview = interview, year = year}) |
table.insert(titleGroup[titleWithoutDate], {interview = interview, year = year}) |
||
end |
|||
-- Sort interviews by date within each title group |
|||
for _, interviews in pairs(titleGroup) do |
|||
table.sort(interviews, function(a, b) return a.year < b.year end) |
|||
end |
end |
||
-- Generate list |
-- Generate list |
||
for |
for _, interview in ipairs(interviews_table) do |
||
local |
local year = dateParser.parse(interview.date) |
||
local dateRange = getDateRange(year) |
|||
⚫ | |||
for _, interviewData in ipairs(interviews) do |
|||
local |
local titleWithoutDate = string.match(interview.title, '^(.-)%s*%(.-%)$') or interview.title |
||
local |
local interviews = titleGroup[titleWithoutDate] |
||
local |
local hasMultipleInterviews = #interviews > 1 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end |
|||
end |
end |
||
end |
end |
||
Line 60: | Line 53: | ||
return table.concat(list, '\n') |
return table.concat(list, '\n') |
||
end |
end |
||
return p |
return p |
Revision as of 10:14, 6 May 2023
Documentation for this module may be created at Module:InterviewNavbox/doc
local p = {}
local dateParser = require('Module:InterviewUtils')
local function getDateRange(year)
if year >= 1981 and year <= 1995 then
return 1
elseif year >= 1996 and year <= 2005 then
return 2
elseif year >= 2006 and year <= 2015 then
return 3
elseif year >= 2016 and year <= 2020 then
return 4
elseif year >= 2021 and year <= 2025 then
return 5
elseif year >= 2026 and year <= 2030 then
return 6
end
return nil
end
function p.main(frame)
local dateRangeInput = tonumber(frame.args[1]) or 1
local content = mw.loadJsonData('JoJo Wiki:Interviews')
local interviews_table = content.interviews
local list = {}
local titleGroup = {}
-- Group interviews by title without date
for _, interview in ipairs(interviews_table) do
local year = dateParser.parse(interview.date)
local titleWithoutDate = string.match(interview.title, '^(.-)%s*%(.-%)$') or interview.title
titleGroup[titleWithoutDate] = titleGroup[titleWithoutDate] or {}
table.insert(titleGroup[titleWithoutDate], {interview = interview, year = year})
end
-- Generate list
for _, interview in ipairs(interviews_table) do
local year = dateParser.parse(interview.date)
local dateRange = getDateRange(year)
if dateRange == dateRangeInput then
local titleWithoutDate = string.match(interview.title, '^(.-)%s*%(.-%)$') or interview.title
local interviews = titleGroup[titleWithoutDate]
local hasMultipleInterviews = #interviews > 1
local itemTitle = hasMultipleInterviews and interview.title or titleWithoutDate
local item = frame:expandTemplate{title = 'INT', args = {interview.title, itemTitle}}
table.insert(list, '*' .. item)
end
end
return table.concat(list, '\n')
end
return p