Template:Ep

From Queen's Court Games

local p = {} -- function to retrieve and format the episode name function p.ep(frame) -- convert the input into the standardized epCode

   local ep =  frame.args[1]
   local epMatcher = require('Module:Ep/Matcher')
   local epCode = epMatcher.matchCode(ep)
   
   -- error message if code doesn't exist
   if epCode == '0x00' then
   	local errorMsg = "Undefined Episode"
   	local title = mw.title.getCurrentTitle()
   	local namespace = title.namespace
   	local subpageText = title.subpageText
   	if namespace == 0 then
   		errorMsg = errorMsg .. ""
   	elseif subpageText == 'test' or subpageText == 'testcases' then 
   		errorMsg = errorMsg .. " would be in Category:Ep calls to undefined episodes"
   	end
   	return errorMsg
   end
   
   -- get the title and pagename for that epCode
   local epInfo = require('Module:Ep/Info')
   local epName = epInfo.title(epCode)
   local pageName = epInfo.pagename(epCode)

   -- epCode (w/special formatting, if any)
   local epCodeFormatted = epInfo.epCodeFormatted(epCode)

   -- formatting with the various parameters of local p = {}

-- function to retrieve and format the episode name function p.ep(frame) -- convert the input into the standardized epCode

   local ep =  frame.args[1]
   local epMatcher = require('Module:Ep/Matcher')
   local epCode = epMatcher.matchCode(ep)
   
   -- error message if code doesn't exist
   if epCode == '0x00' then
   	local errorMsg = "Undefined Episode"
   	local title = mw.title.getCurrentTitle()
   	local namespace = title.namespace
   	local subpageText = title.subpageText
   	if namespace == 0 then
   		errorMsg = errorMsg .. ""
   	elseif subpageText == 'test' or subpageText == 'testcases' then 
   		errorMsg = errorMsg .. " would be in Category:Ep calls to undefined episodes"
   	end
   	return errorMsg
   end
   
   -- get the title and pagename for that epCode
   local epInfo = require('Module:Ep/Info')
   local epName = epInfo.title(epCode)
   local pageName = epInfo.pagename(epCode)

   -- epCode (w/special formatting, if any)
   local epCodeFormatted = epInfo.epCodeFormatted(epCode)

   -- formatting with the various parameters of Template loop detected: Template:Ep
   local text = frame.args["text"] or nil
   local nolink = frame.args["nolink"] or nil
   local plain = frame.args["plain"] or nil
   local hide = frame.args["hide"] or nil
   local noshow = frame.args["noshow"] or nil
   
   local epValue
   
   if pageName:find("Talks Machina Special") and exists(noshow) then
   	epName = split(pageName, ': ')[2]
   elseif pageName:find("Talks Machina") and exists(noshow) then
   	epName = pageName:gsub('Talks Machina ', '#')
   elseif exists(noshow) then
       epName = pageName
   end


if exists(text) then epValue = pageName .. "|" .. text elseif pageName ~= epName and not exists(nolink) then

       epValue = pageName .. '|' .. epName

elseif exists(nolink) then epValue = epName

   else
   	epValue = pageName
   end
   if exists(nolink) then epValue = epValue
   else epValue = "" .. epValue .. "" end
   if not exists(plain) then epValue = '"' .. epValue .. '"' end

   local fullEpValue = epValue .. ' ' .. epCodeFormatted

   if exists(hide) then return epValue
       else return fullEpValue end

end

--function to determine if a string is empty function exists(s)

  return s ~= nil and s ~= 

end

-- function to split a string at a specified character function split(s, delimiter)

   result = {};
   for match in (s..delimiter):gmatch("(.-)"..delimiter) do
       table.insert(result, match);
   end
   return result;

end

return p

   local text = frame.args["text"] or nil
   local nolink = frame.args["nolink"] or nil
   local plain = frame.args["plain"] or nil
   local hide = frame.args["hide"] or nil
   local noshow = frame.args["noshow"] or nil
   
   local epValue
   
   if pageName:find("Talks Machina Special") and exists(noshow) then
   	epName = split(pageName, ': ')[2]
   elseif pageName:find("Talks Machina") and exists(noshow) then
   	epName = pageName:gsub('Talks Machina ', '#')
   elseif exists(noshow) then
       epName = pageName
   end


if exists(text) then epValue = pageName .. "|" .. text elseif pageName ~= epName and not exists(nolink) then

       epValue = pageName .. '|' .. epName

elseif exists(nolink) then epValue = epName

   else
   	epValue = pageName
   end
   if exists(nolink) then epValue = epValue
   else epValue = "" .. epValue .. "" end
   if not exists(plain) then epValue = '"' .. epValue .. '"' end

   local fullEpValue = epValue .. ' ' .. epCodeFormatted

   if exists(hide) then return epValue
       else return fullEpValue end

end

--function to determine if a string is empty function exists(s)

  return s ~= nil and s ~= 

end

-- function to split a string at a specified character function split(s, delimiter)

   result = {};
   for match in (s..delimiter):gmatch("(.-)"..delimiter) do
       table.insert(result, match);
   end
   return result;

end

return p