মডিউল:ব্যবহারকারী স্ক্রিপ্টের ছকের সারি

local p = {}

function p._main(args)
	local code = args.code
	local doc = args.doc
	local name = args.name
	local desc = args.desc
	local ins = args.ins
	
	if not code and not doc then
		return mw.html.create('tr'):tag('td'):attr('colspan', 4)
			:tag('span')
				:addClass('error')
				:wikitext('ত্রুটি: <code>|code=</code> বা <code>|doc=</code> অবশ্যই দিতে হবে')
				:allDone()
	end
	
	if not code and not args.inst then
		code = doc .. '.js'
	end
	if not doc then
		local title = code:match('^(.+)%.[CJcj][Ss][Ss]?$')
		if title then
			title = mw.title.new(title)
			if not title.isExternal and title.exists then
				doc = title.fullText
			end
		end
	end
	if not name then
		name = doc and mw.ustring.match(doc, '[^/]+$') or
			mw.ustring.match(code, '([^/]+)%.js')
	end
	
	local row = mw.html.create('tr')
	
	local instruction
	if args.inst ~= 'no' then
		instruction = args.ins or string.format(
			'[//bn.wikiquote.org/w/index.php?title=Special:MyPage/common.js&action=edit <b title="আপনার common.js পাতাটি সম্পাদনা করতে এখানে ক্লিক করুন">এখানে ক্লিক করুন</b>] ও এটি প্রতিলেপন করুন:<div><code>{{subst:%s|1=%s%s}}</code></div>',
			code:find('%.[Cc][Ss][Ss]$') and 'luss' or 'lusc',
			code,
			args.backlink and '|2=' .. args.backlink or ''
		)
		instruction = mw.html.create('')
			:newline()
			:tag('div')
				:addClass('mw-collapsible mw-collapsed userscripttable-instruction')
				:tag('div')
					:addClass('userscripttable-instruction-head')
					:wikitext('কীভাবে ইনস্টল করবেন')
					:done()
				:tag('div')
					:addClass('mw-collapsible-content plainlinks')
					:wikitext(instruction)
					:done()
				:done()
	end
	
	do
		local cell = mw.html.create('td')
			:wikitext(doc and string.format('[[:%s|%s]]', doc, name) or name)
		
		if args.indent and args.indent:find('^%d+$') then
			cell:css('padding-left', args.indent .. 'em')
		end
		
		if code then
			cell
				:wikitext(' ')
				:tag('span')
					:addClass('userscripttable-sourcelink')
					:wikitext(string.format('([[:%s|উৎস]])', code))
					:done()
		end
		
		if instruction and code then
			cell:tag('span')
				:addClass('scriptInstallerLink')
				:attr('id', code)
				:done()
		end
		
		row:node(cell)
	end
	
	row:tag('td')
		:wikitext(desc)
		:node(instruction)
		:done()
	
--	local stats = code and data[code] or { total = 'উ/ন', active = 'উ/ন' }
--	row
--		:tag('td'):wikitext(stats.total):done()
--		:tag('td'):wikitext(stats.active)
	
	return row
end

function p.main(frame)
	local args = {}
	for k, v in pairs(frame:getParent().args) do
		if v and v ~= '' then
			args[k] = v
		end
	end
	return p._main(args)
end

return p