Jump to content

Module:Vgrtbl: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Jackmcbarn (talk | contribs)
rm unnecessary check
Jackmcbarn (talk | contribs)
start work on p.text
Line 2: Line 2:


local lang = mw.language.getContentLanguage()
local lang = mw.language.getContentLanguage()

local function looksLikeYear(str)
local success, result = pcall(lang.formatDate, lang, 'Y', '1-1-' .. str)
return success and tonumber(result) == tonumber(str)
end

function p._text(name, dateText, v, s)
local retval = '<span style="white-space:normal;"><span style="white-space:normal;">'
if looksLikeYear(dateText) then
retval = retval .. dateText
else
-- {{#if:{{{s|}}}|<span style="display:none">{{#time:Ym|{{{1}}}}}</span>}}
--[=[
{{#ifeq:{{#time:c|{{{1}}}}}|{{#time:c|1 {{{1}}}}}
|{{#switch:{{{v|1}}}
|0={{#time:Y-m|{{{1}}}}}
|{{#time:F Y|{{{1}}}}}
}}
|{{#if:{{{s|}}}|<span style="display:none">{{#time:Ymd|{{{1}}}}}</span>}}{{#switch:{{{v|1}}}
|1={{#time:F j, Y|{{{1}}}}}
|0={{#time:Y-m-d|{{{1}}}}}
|2={{#time:j F Y|{{{1}}}}}
|{{#time:F j, Y|{{{1}}}}}
}}
}}
]=]
end
return retval .. '<small>&nbsp;(' .. name .. ')</small>'
end

function p.text(frame)
local args = frame:getParent().args
return p._text(args[2], args[1], args.v, args.s)
end


local function tryDate(str)
local function tryDate(str)

Revision as of 21:44, 21 March 2014

local p = {}

local lang = mw.language.getContentLanguage()

local function looksLikeYear(str)
	local success, result = pcall(lang.formatDate, lang, 'Y', '1-1-' .. str)
	return success and tonumber(result) == tonumber(str)
end

function p._text(name, dateText, v, s)
	local retval = '<span style="white-space:normal;"><span style="white-space:normal;">'
	if looksLikeYear(dateText) then
		retval = retval .. dateText
	else
		-- {{#if:{{{s|}}}|<span style="display:none">{{#time:Ym|{{{1}}}}}</span>}}
		--[=[
{{#ifeq:{{#time:c|{{{1}}}}}|{{#time:c|1 {{{1}}}}}
     |{{#switch:{{{v|1}}}
         |0={{#time:Y-m|{{{1}}}}}
         |{{#time:F Y|{{{1}}}}}
       }}
     |{{#if:{{{s|}}}|<span style="display:none">{{#time:Ymd|{{{1}}}}}</span>}}{{#switch:{{{v|1}}}
	|1={{#time:F j, Y|{{{1}}}}}
        |0={{#time:Y-m-d|{{{1}}}}}
        |2={{#time:j F Y|{{{1}}}}}
        |{{#time:F j, Y|{{{1}}}}}
      }}
    }}
    	]=]
	end
	return retval .. '<small>&nbsp;(' .. name .. ')</small>'
end

function p.text(frame)
	local args = frame:getParent().args
	return p._text(args[2], args[1], args.v, args.s)
end

local function tryDate(str)
	local success, result = pcall(lang.formatDate, lang, 'c', str)
	if success then
		return result
	else
		return str
	end
end

function p.main(frame)
	local args = frame:getParent().args
	local v = args.v or 1
	if args.c == '0' then
		-- If collapse mode is off
		local retval = frame:expandTemplate{title = 'vgrtbl/text', args = { s = 1, v = v, args[2], args[1] }}
		local i = 3
		while args[i] and mw.text.trim(args[i]) ~= '' do
			retval = retval .. '<br />' .. frame:expandTemplate{title = 'vgrtbl/text', args = { v = v, args[i + 1], args[i] }}
			i = i + 2
		end
		return retval
	else
		-- If collapse mode is on
		local dates = {}
		local dateOrder = {}
		local i = 1
		while args[i] and mw.text.trim(args[i]) ~= '' do
			local d = tryDate(args[i + 1])
			if dates[d] then
				table.insert(dates[d], args[i])
			else
				table.insert(dateOrder, d)
				dates[d] = { display = args[i + 1], args[i] }
			end
			i = i + 2
		end
		local retval = ''
		for key, val in ipairs(dateOrder) do
			if key == 1 then
				retval = frame:expandTemplate{title = 'vgrtbl/text', args = { s = 1, v = v, dates[val].display, table.concat(dates[val], '/') }}
			else
				retval = retval .. '<br />' .. frame:expandTemplate{title = 'vgrtbl/text', args = { v = v, dates[val].display, table.concat(dates[val], '/') }}
			end
		end
		return retval
	end
end

return p