Module:WritingCredits: Difference between revisions
Appearance
Content deleted Content added
m Alex 21 moved page Module:StoryTeleplay to Module:WritingCredits: Update |
No edit summary |
||
Line 1: | Line 1: | ||
-- This module implements {{ |
-- This module implements {{WritingCredits}}. |
||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
-- |
-- WritingCredits class |
||
-- The main class. |
-- The main class. |
||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
local |
local WritingCredits = {} |
||
function |
function WritingCredits.splitTable(tab) |
||
-- Split comma-separated values by letter/number |
-- Split comma-separated values by letter/number |
||
local t = {} |
local t = {} |
||
Line 17: | Line 17: | ||
end |
end |
||
function |
function WritingCredits.hasValue(tab, val) |
||
-- Check for value within table |
-- Check for value within table |
||
for k, v in ipairs(tab) do |
for k, v in ipairs(tab) do |
||
Line 27: | Line 27: | ||
end |
end |
||
function |
function WritingCredits.new(frame, args) |
||
args = args or {} |
args = args or {} |
||
Line 36: | Line 36: | ||
defaultOrder = "w,t,s,sb,ex1,ex2,ex3" |
defaultOrder = "w,t,s,sb,ex1,ex2,ex3" |
||
end |
end |
||
local defaultOrder_split = |
local defaultOrder_split = WritingCredits.splitTable(defaultOrder) |
||
local givenOrder = args.order or "" |
local givenOrder = args.order or "" |
||
local givenOrder_split = |
local givenOrder_split = WritingCredits.splitTable(givenOrder) |
||
-- Order of parameters: any provided by template call in their order, then any undeclared in their default order |
-- Order of parameters: any provided by template call in their order, then any undeclared in their default order |
||
for k, v in ipairs(defaultOrder_split) do |
for k, v in ipairs(defaultOrder_split) do |
||
if |
if WritingCredits.hasValue(givenOrder_split, v) == false then |
||
table.insert(givenOrder_split, v) |
table.insert(givenOrder_split, v) |
||
end |
end |
||
Line 77: | Line 77: | ||
local args = require('Module:Arguments').getArgs(frame, { |
local args = require('Module:Arguments').getArgs(frame, { |
||
removeBlanks = false, |
removeBlanks = false, |
||
wrappers = 'Template: |
wrappers = 'Template:WritingCredits' |
||
}) |
}) |
||
return |
return WritingCredits.new(frame, args) |
||
end |
end |
||
Revision as of 07:16, 10 July 2024
Usage
Creates a standard and formatted writing credits list for television episode tables with {{#invoke:WritingCredits|main}}
with the parameters defined in the documentation of the template.
Tracking categories
-- This module implements {{WritingCredits}}.
--------------------------------------------------------------------------------
-- WritingCredits class
-- The main class.
--------------------------------------------------------------------------------
local WritingCredits = {}
function WritingCredits.splitTable(tab)
-- Split comma-separated values by letter/number
local t = {}
for v in string.gmatch(tab, "[%w%d]+") do
t[#t+1] = v
end
return t
end
function WritingCredits.hasValue(tab, val)
-- Check for value within table
for k, v in ipairs(tab) do
if v == val then
return true
end
end
return false
end
function WritingCredits.new(frame, args)
args = args or {}
-- Default order: writer, story, teleplay, storyboard, extras
local defaultOrder = "w,s,t,sb,ex1,ex2,ex3"
if args.tfirst then
-- Teleplay before story (legacy support, will deprecate)
defaultOrder = "w,t,s,sb,ex1,ex2,ex3"
end
local defaultOrder_split = WritingCredits.splitTable(defaultOrder)
local givenOrder = args.order or ""
local givenOrder_split = WritingCredits.splitTable(givenOrder)
-- Order of parameters: any provided by template call in their order, then any undeclared in their default order
for k, v in ipairs(defaultOrder_split) do
if WritingCredits.hasValue(givenOrder_split, v) == false then
table.insert(givenOrder_split, v)
end
end
-- Default or custom labels
local labels = {}
labels['w'] = args['wlabel'] or "Written by"
labels['s'] = args['slabel'] or "Story by"
labels['t'] = args['tlabel'] or "Teleplay by"
labels['sb'] = args['sblabel'] or "Storyboard by"
labels['ex1'] = args['ex1label'] or "Additionally"
labels['ex2'] = args['ex2label'] or "Additionally"
labels['ex3'] = args['ex3label'] or "Additionally"
-- Format labels and values
local writingCredits = ""
for k, v in ipairs(givenOrder_split) do
if args[v] then
writingCredits = writingCredits .. ("<i>" .. labels[v] .. "</i> : " .. args[v] .. "<br />")
end
end
return writingCredits
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
removeBlanks = false,
wrappers = 'Template:WritingCredits'
})
return WritingCredits.new(frame, args)
end
return p