Module:Video citation: Difference between revisions

From ProleWiki, the proletarian encyclopedia
m (Better display of single digit hour and minute count)
m (Attempt to implement Quote (taken from Citation template))
Line 15: Line 15:
local Channel = parent.args.channel
local Channel = parent.args.channel
local Date = parent.args['date']
local Date = parent.args['date']
local Timestamp = parent.args.timestamp
local Quote = parent.args.quote
local URL = parent.args.url
local URL = parent.args.url


Line 48: Line 48:
end
end
end
end
end
if is_set (Quote) then
Quote = string.gsub(Quote,"\n","<br>")
Quote = "“" .. Quote .. "”"
local div = mw.html.create ('div')
div
:attr("style", "width:80%; margin-left:10%;")
:wikitext(Quote)
local br = mw.html.create ('br', selfClosing)
first_part = italics(tostring(div)) .. tostring(br) .. first_part
end
end



Revision as of 22:53, 21 December 2022

local p = {}

local function is_set (var)
	return not (var == nil or var == '');
end

local function italics (var)
	return "<i>" .. var .. "</i>"
end

function p.cite(frame)
	local parent = frame:getParent()
	
	local Title = parent.args.title
	local Channel = parent.args.channel
	local Date = parent.args['date']
	local Quote = parent.args.quote
	local URL = parent.args.url

	local first_part = ''
	local second_part = ''
	
	local extTimestamp = ''
	if is_set(URL) then
		extTimestamp = URL:match("?t=(%d+)")
		if is_set(extTimestamp) then
			local second = extTimestamp%60
			local minute = math.floor(extTimestamp/60)
			local hour = math.floor(minute/60)
			while (minute>=60) do
				minute = minute - 60
			end
			
			extTimestamp = second
			if minute>0 then
				if minute<10 then
					minute = "0" .. minute
				end
				extTimestamp = minute .. ":" .. extTimestamp
				else
					extTimestamp = "00:" .. extTimestamp
			end
			if hour>0 then
				if hour<10 then
					hour = "0" .. hour
				end
				extTimestamp = hour .. ":" .. extTimestamp
			end
		end
	end

	if is_set (Quote) then
		Quote = string.gsub(Quote,"\n","<br>")
		Quote = "“" .. Quote .. "”"
		local div = mw.html.create ('div')
		div
		:attr("style", "width:80%; margin-left:10%;")
		:wikitext(Quote)
		local br = mw.html.create ('br', selfClosing)
		first_part = italics(tostring(div)) .. tostring(br) .. first_part
	end

	if is_set(Channel) then
		first_part = first_part .. Channel
	end
	
	if is_set(Title) then
		if is_set(URL) then
			Title = '[' .. URL .. " " .. '"' .. Title .. '"' .. ']'
		end
		second_part = second_part  .. Title
	end
	
	if is_set(extTimestamp) then
		second_part = second_part .. " (" .. extTimestamp .. ")"
		elseif is_set(Timestamp) then
			second_part = second_part .. " (" .. Timestamp .. ")"
	end
	
	if is_set(Date) then
		if is_set(Channel) then
			first_part = first_part .. ' (' .. Date .. ')'
		else
			second_part = second_part .. ' (' .. Date .. ')'
		end
	end
	
return first_part .. ". " .. second_part .. ". " .. "''[[YouTube]]''"
end
return p