FishTank's Tank Wikia
Advertisement

Documentation for this module may be created at Module:C/doc

local C = { }

local HF = require("Module:ComicsHF")
local parent = nil
local noLink = true

local build = function(arg, arg2, noLink, swapIssue)
  local built = ""
  
  if not HF.isempty(arg) then    
    link = arg
    
    if not HF.isempty(arg2) then
      text = arg2
    end

    title = string.match(arg, "(.+) Vol ")
    if HF.isempty(title) then 
      title = string.match(arg, "(.+) #") 
      if HF.isempty(title) then title = "Title Failed" end
    end
    
    volume = string.match(arg, "Vol ([^%s]+)")
    if HF.isempty(volume) then volume = "1" end
  
    if not HF.isempty(swapIssue) then issue = swapIssue end
    if HF.isempty(issue) then issue = string.match(arg, " #(.+)$") end
    if HF.isempty(issue) then issue = string.match(arg, "Vol [^%s]+ (.+)$") end 
    if HF.isempty(issue) then issue = "Issue Failed" end
  
    if volume == "1" then
      poundTitle = ("''" .. title .. "'' #" .. issue )
    else
      poundTitle = ("''" .. title .. "'' Vol " .. volume .. " #" .. issue )
    end
  
    linkTitle = title .. " Vol " .. volume .. " " .. issue
   
    
    if string.find(title, "—") == nil and string.find(title, "%[") == nil and string.find(string.lower(title), "cnst") == nil then
      
      local noText = HF.isempty(text)
      
      if noLink and noText then built = linkTitle 
      elseif noLink then built = text
      elseif not noLink and noText then
            built = "[[" .. linkTitle .. "|" .. poundTitle .. "]]"
      else
            built = "[[" .. linkTitle .. "|" .. text .."]]"
      end
      
    else
      built = arg
    end
  end
  if string.find(built, " Failed") ~= nil then built = arg end
  return built

end

function C.reference(frame)
  local output = ""
  local first = ""
  local second = ""
  parent = frame:getParent()
  local arg = parent.args[1]
  local arg2 = parent.args[2]
  
  if HF.isempty(arg) then 
    first = "Reference Needed"
  else
    first = build(arg, "", false, "")
  end
  
  if not HF.isempty(arg2) and (string.len(arg2) < 4) then 
    second = "-" .. build(arg, arg2, false, arg2)
  elseif not HF.isempty(arg2) then
    second = arg2
  end
  
  if string.match(first, "%[") == nil then 
    output = HF.Link(first) .. second
  else 
    output = first .. second
  end

  return output
end

function C.referenceName(frame)
  local output = ""
  local name = ""
  parent = frame:getParent()
  local arg = parent.args[1]
  local arg2 = parent.args[2]
  
  if HF.isempty(arg) then
    name = "Reference Needed"
  else
    name = build(arg, arg2, true, "")
    name = string.gsub(name, ":", "")
  end
  
  if not HF.isempty(arg2) and (string.len(arg2) < 4) then 
    name = name .. "-" .. arg2
  end

  output = name 
  return output
end


function C.comic(frame)
  parent = frame:getParent()
  local arg = parent.args[1]
  local arg2 = parent.args[2]
  local output = ""
    output = build(arg, arg2, false, "")
  return output
end

function C.comicNL(frame)
  parent = frame:getParent()
  local arg = parent.args[1]
  local arg2 = parent.args[2]
  local output = ""
    output = build(arg, arg2, true, "")
  return output
end


return C
Advertisement