-- This module implements .  local yesno = require('Module:Yesno') local delink = require('Module:Delink')._delink  local p = {}  function p.main(frame) 	local getArgs = require('Module:Arguments').getArgs 	local args = getArgs(frame) 	return p._main(args) end  function p._main(args) 	-- If first arg or a url is not provided, 	-- but we have a second arg, make a button. 	-- Otherwise, return nothing. 	args.originalInput = args[1] 	args[1] = delink({args[1]}) 	if args[1] == "" then 		args[1] = nil 	end  	if not args[1] and not args.url then 		if args[2] then 			p.nolink = true 		else 			return 		end 	end  	local data = p.makeLinkData(args) 	local link = p.renderLink(args.originalInput, data) 	local trackingCategories = p.renderTrackingCategories(args) 	return link .. trackingCategories end  function p.makeLinkData(args) 	local data = {}  	-- Get the link and display values, 	-- and find whether we are outputting 	-- a wikilink or a URL. 	if args.url then 		data.isUrl = true 		data.link = args.url 		if args[1] then 			data.display = args[1] 		elseif args[2] then 			data.display = args[2] 		else 			data.display = args.url 			p.urlisdisplay = true 		end 	else 		data.isUrl = false 		p.urlisdisplay = false 		data.link = args[1] 		if args[2] then 			data.display = args[2] 		else 			data.display = args[1] 		end 		if args[1] and args[1]:find('http') then 			data.isUrl = true 		end 	end 	 	if yesno(args.link) == false then 		p.nolink = true 	end  	-- Colours 	-- For the merge with  	local colour = args.color and args.color:lower()  	-- Classes 	local class = args.class and args.class:lower() 	data.classes = {} 	if class == 'ui-button-green' 		or class == 'ui-button-blue' 		or class == 'ui-button-red' 	then 		table.insert( 			data.classes, 			'submit ui-button ui-widget ui-state-default ui-corner-all' 				.. ' ui-button-text-only ui-button-text' 		) 	else 		table.insert(data.classes, 'mw-ui-button') 	end 	 	--If class is unset, 	--then let color determine class 	if not class then 		if colour == 'blue' then 			class = 'mw-ui-progressive' 		elseif colour == 'red' then 			class = 'mw-ui-destructive' 		elseif colour == 'green' then 			class = 'mw-ui-constructive' 		end 	end 	 	if class then 		table.insert(data.classes, class) 	end  	-- Styles 	do 		--[[ 		-- Check whether we are on the same page as we have specified in 		-- args[1], but not if we are using a URL link, as then args[1] is only 		-- a display value. If we are currently on the page specified in 		-- args[1] make the button colour darker so that it stands out from 		-- other buttons on the page. 		--]] 		local success, linkTitle, currentTitle 		if not data.isUrl then 			currentTitle = mw.title.getCurrentTitle() 			success, linkTitle = pcall(mw.title.new, args[1]) 		elseif p.urlisdisplay then 			currentTitle = mw.title.getCurrentTitle() 		end 		if success 			and linkTitle 			and mw.title.equals(currentTitle, linkTitle) 			and not p.urlisdisplay 		then 			if class == 'ui-button-blue' 				or class == 'mw-ui-progressive' 				or class == 'mw-ui-constructive' 			then 				data.backgroundColor = '#2962CB' 				data.color = '#fff' 			elseif class == 'ui-button-green' then 				data.backgroundColor = '#008B6D' 			elseif class == 'ui-button-red' or class == 'mw-ui-destructive' then 				data.backgroundColor = '#A6170F' 			else 				data.backgroundColor = '#CCC' 				data.color = '#666' 			end 		elseif p.urlisdisplay then 			data.dummyLink = tostring(currentTitle) 		end 		-- Add user-specified styles. 		data.style = args.style 	end 	return data end  function p.renderLink(originalInput, data) 	-- Render the display span tag. 	local display 	do 		local displaySpan = mw.html.create('span') 		for i, class in ipairs(data.classes or {}) do 			displaySpan:addClass(class) 		end  		displaySpan 			:css{ 				['background-color'] = data.backgroundColor, 				color = data.color 			} 		if data.style then 			displaySpan:cssText(data.style) 		end 		displaySpan:wikitext(data.display) 		display = tostring(displaySpan) 	end  	-- Render the link 	local link 	if originalInput and originalInput:find('|') then 		link = string.format('%s', delink({originalInput, wikilinks = 'target'}), display) 	elseif p.nolink then 		if p.urlisdisplay then 			link = string.format('%s', data.dummyLink, display) 		else 			link = string.format('%s', display) 		end 	else 		if data.isUrl then 			link = string.format('[%s %s]', data.link, display) 		else 			link = string.format('%s', data.link, display) 		end 	end  	return string.format('%s', link) end  function p.renderTrackingCategories(args) 	if yesno(args.category) == false then 		return  	end 	local class = args.class and args.class:lower() 	if class == 'ui-button-green' 		or class == 'ui-button-blue' 		or class == 'ui-button-red' 	then 		return 'বিষয়শ্রেণী:পুরানো শৈলীর ইউআই-বোতাম ব্যবহার করা পাতা' 	else 		return '' 	end end  return p