FANDOM


local p = {}
 
-- function to create and format the reference
function p.epRef(frame)
    local reference = true
    local epSwitcher = require('Module:CorvusTheFeatherbrain/Ep/Switcher')
 
    -- receiving {{ep ref}} parameters
    local ep = frame.args["ep"] or "0x00"
    local part = frame.args["part"] or nil
    local intro = frame.args["intro"] or nil
    local more = frame.args["more"] or nil
    local vod = frame.args["vod"] or nil
    local group = frame.args["group"] or nil
    local name = frame.args["name"] or nil
    local startTime = frame.args[1] or nil
    local endTime = frame.args[2] or nil
    local cite = frame.args["cite"] or nil
    local nsfw = frame.args["nsfw"] or nil
 
    local epName, CxEE = epSwitcher.epSwitcher(frame, reference)
 
    if isnotempty(CxEE) then epName = "\"[[" .. epName .. "]]\"" end
 
    -- <small>(CxEE)</small>
    local small = mw.html.create('small')
    small
        :wikitext("(" .. CxEE .. ")")
 
    if isnotempty(CxEE) then fullEpName = epName .. " " .. tostring(small)
    else fullEpName = epName end
 
    if CxEE == "0x00" then fullEpName = "[[Category:Ep refs missing episode parameter]]<span style=\"color:darkred;\">''' Undefined Episode'''</span>" end
 
    -- Set empty CxEE value to 0x00 for the purposes of the "Articles needing citations/0x00" category
    if not isnotempty(CxEE) then CxEE = "0x00" end
 
 
    -- if part was used to define a Trial of the Take episode, remove part from final reference
    if CxEE == "2x02" or CxEE == "2x03" or CxEE == "2x04" or CxEE == "2x05" then part = "" end
 
    -- get YouTube URL from Module:CorvusTheFeatherbrain/Ep/YTURLSwitcher
    local ytURL = mw.loadData('Module:CorvusTheFeatherbrain/Ep/YTURLSwitcher')
    local url
    if isnotempty(vod) then url = vod
    elseif isnotempty(part) then url = ytURL[CxEE .. part] 
    else url = ytURL[CxEE] or ytURL["#default"] end
 
    --add timestamp to youtube URL
    local timeSnippet
    local timedURL
    local longURL = false
 
    if isnotempty(url) then longURL = string.find(url, "?") end
 
    if isnotempty(startTime) then timeSnippet = split(startTime, ":") end
    if isnotempty(timeSnippet) and longURL then timedURL = "[" .. url .. "&amp;t=0" .. timeSnippet[1] .. "h0" .. timeSnippet[2] .. "m0" .. timeSnippet[3] .. "s " .. startTime .. "]"
    elseif isnotempty(url) and isnotempty(timeSnippet) then timedURL = "[" .. url .. "?t=0" .. timeSnippet[1] .. "h0" .. timeSnippet[2] .. "m0" .. timeSnippet[3] .. "s " .. startTime .. "]" end
 
    if isnotempty(timedURL) then startTime = timedURL end
 
    local refText = 'See ' .. fullEpName
 
 
    if isnotempty(part) then refText = refText .. ", part " .. part end
 
    if isnotempty(part) and isnotempty(startTime) then refText = refText .. "," end
 
    if isnotempty(startTime) and isnotempty(endTime) then refText = refText .. " from " .. startTime .. " through " .. endTime .. "."
    elseif isnotempty(startTime) then refText = refText .. " at " .. startTime .. "."
    else refText = refText .. "." end
 
 
    -- citation format
    local supCite = mw.html.create('sup')
    supCite
        :wikitext("[''citation needed'']")
 
    local citeCategory
    if isnotempty(cite) then citeCategory = "[[Category:Articles needing citations/" .. CxEE .. "]]" end
 
    if isnotempty(intro) then refText = intro .. "  " .. refText end
    if isnotempty(cite) then refText = refText .. tostring(supCite) .. citeCategory end
    if isnotempty(more) then refText = refText .. "  " .. more end
    if isnotempty(nsfw) then nsfw = "  <span style=\"color: red;\"><abbr style=\"cursor:help;border-bottom:1px dotted red;\" title=\"Not Safe For Work:&nbsp; May include inappropriate content.\">NSFW</abbr></span>." end
    if isnotempty(nsfw) then refText = refText .. nsfw end
 
    -- create wikitext reference
    local reference = "<ref"
    if isnotempty(group) then reference = reference .. " group=" .. group end
    if isnotempty(name) then reference = reference .. " name=" .. name end
    reference = reference .. ">" .. refText .. "</ref>"
 
    return frame:preprocess(reference)
 
 
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
 
-- function to determine that a string is not empty
function isnotempty(s)
    return s ~= nil and s~= ''
end
 
 
return p

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.