Module:Comics

local p = {}

-- get the list of images and captions and transform them into gallery of alternate covers function p.covers(frame) local l_covers = mw.text.split( frame.args[1],"*",true ) local l_captions = mw.text.split( frame.args[2],"*",true ) local l = {} local c = {} local i   local j    local k    local s    local res = {} i = 1 j = 1 while next(l_covers,i) ~= nil do       if l_covers[i] ~= nil and l_covers[i] ~= "" then l[j] = l_covers[i] c[j] = l_captions[i] j = j + 1 end i = i + 1 end i = 1 j = j - 1 for k=1,j do       s = ''..c[k]..' ' if i == 3 then s = s..' ' i = 1 else i = i + 1 end table.insert(res, s)   end return table.concat(res) end

--get the list of story contributors (writers, pencilers, etc.) and transform it into infobox lines with or without categorization function p.StoryContributors(frame) local SC = require("Module:StaffCorrection") local l = mw.text.split( frame.args[1],"*",true ) local t = frame.args[2] local cat = frame.args["category"] local link_name = frame.args["link_name"] local needed = frame.args["needed"] local t2   local i    local v    local c

if t == 'Editor-in-Chief' then t2 = 'Editors-in-Chief' elseif t == 'Adapted' then t = 'Story adapted from original material by' t2 = 'Adapted Stories' else t2 = t..'s'   end if link_name == nil or link_name == "" then link_name = ..t.. end i = 1 while next(l,i) ~= nil do       v = l[i] c = SC.Correction(v) if v ~= nil and v ~= "" then if string.lower(v) == 'uncredited' or string.lower(v) == 'n/a' then l[i] = 'Uncredited' else l[i] = ..v.. if cat == "yes" then l[i] = l[i]..' ' else l[i] = l[i]..' ' end end end i = i + 1 end

l = table.concat(l) if l ~= nil and l ~= "" then l = '' elseif cat == 'yes' and needed ~= 'no' then l = '' end return frame:preprocess( l ) end

-- get the list formed by dpl query from a comics issues and replace/move all tags to suppress all appearances categoriztion. function p.reprint(frame) local l = mw.text.unstrip( frame.args[1] ) local pagename = frame.args[2] local j   local k    l = mw.text.split(l,'\n') for i,v in ipairs(l) do       l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%2 ' ) l[i] = mw.ustring.gsub(l[i], '', '%2 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '', '%1 ' ) l[i] = mw.ustring.gsub(l[i], '(', '%2 %1}}' )       --l[i] = mw.ustring.gsub(l[i], '(', '%2 %1}}' ) j, k = mw.ustring.find(l[i], '{{.-|') if j ~= nil and string.lower( string.sub( l[i], j, k ) ) ~= '{{g|' and string.lower( string.sub( l[i], j, k ) ) ~= '{{green|' and string.lower( string.sub( l[i], j, k ) ) ~= '{{c|' then l[i] = mw.ustring.gsub(l[i], '(', '%2 %1}}' )       end        l[i] = mw.ustring.gsub(l[i], '{{chronology}}', '{{g|See chronology}}' )        l[i] = mw.ustring.gsub(l[i], '{{Chronology}}', '{{g|See chronology}}' )        l[i] = mw.ustring.gsub(l[i], '{{chronoFB}}', '{{g|Appears in flashback}}' )        l[i] = mw.ustring.gsub(l[i], '{{ChronoFB}}', '{{g|Appears in flashback}}' )        l[i] = mw.ustring.gsub(l[i], '%[%[Category:.-%]%]', '' )        l[i] = mw.ustring.gsub(l[i], '&lt;', '<' )        l[i] = mw.ustring.gsub(l[i], '&gt;', '>' )        l[i] = l[i]..'\n'    end    return frame:preprocess( table.concat(l) ) end

-- forms a gallery of comics issues in specified volume based on dpl query from vloume category function p.volume(frame) local monthData = mw.loadData( 'Module:Month/data' ) local monthAliases = monthData[1] local l = mw.text.split(frame.args["list"],"@@@",true) local parts = { frame.args["part1"], frame.args["part2"], frame.args["part3"], frame.args["part4"], frame.args["part5"], frame.args["part6"], frame.args["part7"], frame.args["part8"], frame.args["part9"]} local above = { frame.args["part1_above"], frame.args["part2_above"], frame.args["part3_above"], frame.args["part4_above"], frame.args["part5_above"], frame.args["part6_above"], frame.args["part7_above"], frame.args["part8_above"], frame.args["part9_above"] } local below = { frame.args["part1_below"], frame.args["part2_below"], frame.args["part3_below"], frame.args["part4_below"], frame.args["part5_below"], frame.args["part6_below"], frame.args["part7_below"], frame.args["part8_below"], frame.args["part9_below"] } local part local a   local b    local s_page local s_image local s_title local s_year local s_month local s_volume local s_issue local i = 1 local v   local s    local t = {} local t2 = {} local cover local textless local j   local k    local e

while next(l,i) ~= nil do       v = mw.text.split(l[i],"*",true) i = i + 1 s_page = v[1] s_image = v[2] s_title = v[3] s_year = v[4] s_month = monthAliases[string.lower( v[5] )] or v[5] s = s_page s = string.gsub(s,'/',' ') s = string.gsub(s,':',' ') cover = s..".jpg" textless = s.." Textless.jpg" if s_image == nil or s_image == "" then if mw.title.new("File:"..cover).exists == true then s_image = cover elseif mw.title.new("File:"..textless).exists == true then s_image = textless else s_image = "No Image Cover.jpg" end end if s_title == nil or s_title == "" then s_title = "" else s_title = ' "'..s_title..'"' end

e,j,k = string.find(s_page," Vol (%d+) ") s_volume = string.sub(s_page, 1, e)       s_issue = string.sub(s_page, j+1, string.len(s_page)) if tonumber(k) == 1 then s = ""..s_volume.." #"..s_issue.."" else s = ""..s_volume.." Vol "..k.." #"..s_issue.."" end j = string.find(s_issue,"-",1,true) -- -1 issues k = string.find(s_issue,".",1,true) -- point one issues if j == nil then if k ~= nil then s_issue = string.sub(s_issue,1,k-1).."9" s_issue = string.rep("0", 10-#s_issue)..s_issue else s_issue = s_issue.."0" s_issue = string.rep("0", 10-#s_issue)..s_issue end end s = s_issue..'@@@'..s_image..'{{!}}'....s_page..'{{!}}'..s....s_title..' (Category:'..s_year..', '..s_month..'{{!}}'..s_month..' ,'..s_year..')\n' table.insert(t,s) end table.sort(t) i = 1 while i <= #t do       v = mw.text.split(t[i],"@@@",true) i = i + 1 s = v[2] table.insert(t2,s) end

if tonumber(parts[1]) == nil or tonumber(parts[1]) == 0 then return frame:preprocess('{{#tag:gallery|'..table.concat(t2)..'|position=center|captionalign=center|hideaddbutton=true}}') else t = {} i = 1 while i <=#parts do               if i == 1 then j = 1 else j = parts[i-1]+1 end part = tonumber(parts[i]) if part == nil or part == 0 then break else a = above[i] b = below[i] i = i + 1 if part>#t2 then part = #t2 end table.insert(t, a..frame:preprocess('{{#tag:gallery|'..table.concat(t2,"",j,part)..'|position=center|captionalign=center|hideaddbutton=true}}')..b)               end end return table.concat(t) end end

return p