Module:Sandbox/Gonnym/episodewikidata

local getArgs = require('Module:Arguments').getArgs local getWikiDataValue = require('Module:WikidataIB/sandbox')._getValue

p = {}

local function getPreviousEpisodeFromWikiData return getWikiDataValue({"P155", fetchwikidata = "ALL", onlysourced = "no"}) end

local function getNextEpisodeFromWikiData return getWikiDataValue({"P156", fetchwikidata = "ALL", onlysourced = "no"}) end

function p.getPreviousEpisodeFromWikiData return getWikiDataValue({"P155", fetchwikidata = "ALL", onlysourced = "no", qid = "Q20785929"}) end

function p.getNextEpisodeFromWikiData return getWikiDataValue({"P156", fetchwikidata = "ALL", onlysourced = "no", qid = "Q20785929"}) end

local function getFormattedPreviousEpisodeLink(args) local previousEpisodeRaw = args.rprev or args.RPrev local previousEpisode = args.prev or getPreviousEpisodeFromWikiData

local previousEpisodeLink local hasLink = true if (previousEpisodeRaw) then previousEpisodeLink = previousEpisodeRaw elseif (previousEpisode) then previousEpisodeLink = '"' .. previousEpisode .. '"' else previousEpisodeLink = "&mdash;" hasLink = false end return previousEpisodeLink, hasLink end

local function getFormattedNextEpisodeLink(args) local nextEpisodeRaw = args.rnext or args.RNext local nextEpisode = args.next or getNextEpisodeFromWikiData

local nextEpisodeLink local hasLink = true if (nextEpisodeRaw) then nextEpisodeLink = nextEpisodeRaw elseif (nextEpisode) then nextEpisodeLink = '"' .. nextEpisode .. '"' else nextEpisodeLink = "&mdash;" hasLink = false end

return nextEpisodeLink, hasLink end

function p.getEpisodeChronology(frame) local args = getArgs(frame) local previousEpisodeLink, hasPreviousLink = getFormattedPreviousEpisodeLink(args) local nextEpisodeLink, hasNextLink = getFormattedNextEpisodeLink(args) if (hasPreviousLink or hasNextLink) then --	return frame:expandTemplate{title = 'succession links', args = {left = previousEpisodeLink, right=nextEpisodeLink}} local chronologyString = ' ' ..		' ← \'\'\'Previous\'\'\' ' .. previousEpisodeLink .. ' ' ..		' \'\'\'Next\'\'\' → ' .. nextEpisodeLink .. ' ' ..		' '	return chronologyString else return nil end end

function p.getHeaderTitle(frame) local args = getArgs(frame) local previousEpisode = args.prev or args.rprev or args.RPrev or getPreviousEpisodeFromWikiData local nextEpisode = args.next or args.rnext or args.RNext or getNextEpisodeFromWikiData if (previousEpisode or nextEpisode) then return "Episode chronology" end end

return p