require('Modül:No globals') local getArgs = require('Modül:Arguments').getArgs local p = {} local function items(args, year) local itemList = {} if args[year] or args[year .. 'a'] then table.insert(itemList, args[year] or args[year .. 'a']) end for asciiletter = 98, 106 do -- 98 b, 106 j if args[year .. string.char(asciiletter)] then table.insert(itemList, args[year .. string.char(asciiletter)]) end end return table.maxn(itemList), itemList end local function color(args, year, itemNum) if args[year .. '_color'] then return args[year .. '_color'] end for yearrange = 1, 5 do if args['range' .. yearrange] and args['range' .. yearrange .. '_color'] then local _, _, beginyear, endyear = string.find( args['range' .. yearrange], '^(%d%d%d%d)%D+(%d%d%d%d)$' ) local year = tonumber(year) or 9999 -- For year == 'TBA' beginyear = tonumber(beginyear) or 0 endyear = tonumber(endyear) or 9999 if year >= beginyear and year <= endyear then local _, _, color1, color2 = string.find( args['range' .. yearrange .. '_color'], '^(%S*)%s*(%S*)$' ) color2 = (string.find(color2, '^#?%w+$')) and color2 or color1 return (itemNum > 0) and color1 or color2 end end end return (itemNum > 0) and '#0BDA51' or '#228B22' end local function left(builder, args, year, itemNum) builder = builder:tag( 'td' ) :attr('scope', 'row') :css('border', 'none') :css('padding', '5px') :css('border-right', '20px solid ' .. color(args, year, itemNum)) :wikitext(year) if itemNum > 1 then builder = builder:attr('rowspan', itemNum) end end local function right(builder, args, year, itemNum, itemList) if itemNum 0 then return end if itemNum 1 then builder:tag('td') :css('padding','5px') :css('border', 'none') :wikitext(itemList[1]) return end -- if itemNum >= 2 builder:tag('td') :css('border', 'none') :css('padding','5px 5px 2px 5px') :wikitext(itemList[1]) for key = 2, itemNum - 1 do builder = builder:tag('tr') :tag('td') :css('border', 'none') :css('padding','2px 5px 2px 5px') :wikitext(itemList[key]) end builder = builder:tag('tr') :tag('td') :css('border', 'none') :css('padding','2px 5px 5px 5px') :wikitext(itemList[itemNum]) end local function row(builder, args, year) local itemNum, itemList = items(args, year) builder = builder:tag('tr') left(builder, args, year, itemNum) right(builder, args, year, itemNum, itemList) end -------------------------------------------------------------------------------- function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) -- Main module code goes here. local ret local firstyear, lastyear local TBA = (items(args, 'TBA')) > 0 and true or false ret = mw.html.create( 'table' ) :addClass('wikitable') :css('border', 'none') :css('float', args.align or 'right') :css('clear', args.align or 'right') :css('margin', '0 0 0.5ex 1em') :css('font-size', '80%') :css('line-height', '90%') :css('border-collapse', 'separate') :css('border-spacing', '0 1px') :css('background-color', 'transparent') ret:tag('caption') :css('padding', '5px') :wikitext(args.title and args.title or 'Video oyunları zaman çizelgesi') :wikitext(args.subtitle and string.format(, args.subtitle), ) if tonumber(args.first) then firstyear = tonumber(args.first) else for i = 1940, os.date('%Y') do if (items(args, i)) > 0 then firstyear = i break end end end if tonumber(args.last) then lastyear = tonumber(args.last) else for i = os.date('%Y') + 3, TBA and os.date('%Y') or firstyear, -1 do if (items(args, i)) > 0 then lastyear = i break end end lastyear = lastyear or (os.date('%Y') - 1) end for year = firstyear, lastyear do row(ret, args, year) end if TBA then row(ret, args, 'TBA') end return ret end return p