<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ABar_box</id>
	<title>Module:Bar box - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ABar_box"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Bar_box&amp;action=history"/>
	<updated>2026-06-14T04:22:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Bar_box&amp;diff=471101&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Bar_box&amp;diff=471101&amp;oldid=prev"/>
		<updated>2021-07-15T20:49:03Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require('Module:Lua class')&lt;br /&gt;
&lt;br /&gt;
local BarBox = class('BarBox', {&lt;br /&gt;
	_css = 'Module:Bar box/styles.css',&lt;br /&gt;
&lt;br /&gt;
	__init = function (self, args)&lt;br /&gt;
		self.css			 = args[1]  or args.css&lt;br /&gt;
		self.float			 = args[2]  or args.float or 'none'&lt;br /&gt;
		self.backgroundcolor = args[3]  or args.backgroundcolor or 'white'&lt;br /&gt;
		self.borderwidth	 = args[4]  or args.borderwidth or '1'&lt;br /&gt;
		self.style			 = args[5]  or args.style&lt;br /&gt;
		self.width			 = args[6]  or args.width-- or 'auto'&lt;br /&gt;
		self.barwidth		 = args[7]  or args.barwidth or '100px'&lt;br /&gt;
		self.lineheight		 = args[8]  or args.lineheight-- or '1.6'&lt;br /&gt;
		self.title			 = args[9]  or args.title&lt;br /&gt;
		self.titlebar		 = args[10] or args.titlebar-- or 'none'&lt;br /&gt;
		self.left1			 = args[11] or args.left1&lt;br /&gt;
		self.left2			 = args[12] or args.left2&lt;br /&gt;
		self.right1			 = args[13] or args.right1&lt;br /&gt;
		self.right2			 = args[14] or args.right2&lt;br /&gt;
		self.bars			 = args[15] or args.bars&lt;br /&gt;
		self.caption		 = args[16] or args.caption -- deprecated&lt;br /&gt;
		self.footer			 = args[17] or args.footer or args[16] or args.caption&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	create = function (cls, args)&lt;br /&gt;
		args = mw.clone(args)&lt;br /&gt;
		args.float	  = args.float and args.float:lower()&lt;br /&gt;
		args.width	  = tonumber(args.width) and args.width .. 'px' or args.width and args.width:lower()&lt;br /&gt;
		args.barwidth = tonumber(args.barwidth) and args.barwidth .. 'px' or args.barwidth and args.barwidth:lower()&lt;br /&gt;
		return cls(args)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	_sDefaultAlign = 'lrlr',&lt;br /&gt;
	_tDefaultAlign = {false, 'r', false, 'r'},&lt;br /&gt;
&lt;br /&gt;
	_setAlign = function (obj, align)&lt;br /&gt;
		obj._alignClasses = {}&lt;br /&gt;
		for i, d in ipairs(obj._tDefaultAlign) do&lt;br /&gt;
			local a = align:sub(i,i)&lt;br /&gt;
			if a == 'l' then&lt;br /&gt;
				a = false&lt;br /&gt;
			elseif a == 'd' then&lt;br /&gt;
				a = d&lt;br /&gt;
			elseif a ~= 'c' and a ~= 'r' then&lt;br /&gt;
				error('unrecognized align[' .. i .. ']')&lt;br /&gt;
			end&lt;br /&gt;
			obj._alignClasses[i] = a and 'class=bb-' .. a&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	html = function (self)&lt;br /&gt;
		local output = {}&lt;br /&gt;
&lt;br /&gt;
		local frame = mw.getCurrentFrame()&lt;br /&gt;
		output[1] = frame:extensionTag('templatestyles', '', {src=self._css}) .. '\n'&lt;br /&gt;
		output[2] = self.css and frame:extensionTag('templatestyles', '', {src=self.css}) .. '\n' or ''&lt;br /&gt;
&lt;br /&gt;
		local class = 'barbox'&lt;br /&gt;
		if self.float == 'left' or self.float == 'right' then&lt;br /&gt;
			class = class .. ' t' .. self.float&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		output[3] =&lt;br /&gt;
			'&amp;lt;div class=&amp;quot;' .. class .. '&amp;quot; style=&amp;quot;background:' .. self.backgroundcolor ..&lt;br /&gt;
			'; border:' .. self.borderwidth .. 'px solid silver' ..&lt;br /&gt;
			(self.float == 'center' and '; margin:0 auto' or '') ..&lt;br /&gt;
			(self.width and '; width:' .. self.width or '') ..&lt;br /&gt;
			(self.style and '; ' .. self.style or '') .. '&amp;quot;&amp;gt;\n' ..&lt;br /&gt;
				'{|' .. (self.lineheight and ' style=&amp;quot;line-height:' .. self.lineheight .. '&amp;quot;' or '') .. '\n'&lt;br /&gt;
&lt;br /&gt;
			output[4] = self.title and&lt;br /&gt;
				'|+ class=bb-default' .. (self.titlebar and ' style=&amp;quot;background:' .. self.titlebar .. '&amp;quot;' or '') .. ' |\n' ..&lt;br /&gt;
				self.title .. '\n'&lt;br /&gt;
			or ''&lt;br /&gt;
&lt;br /&gt;
			output[5] = '|- class=bb-default style=&amp;quot;font-size:88%; min-height:4px&amp;quot;\n'&lt;br /&gt;
				if self._alignClasses then -- same as self.__class._alignClasses&lt;br /&gt;
					self._alignClasses = self._alignClasses&lt;br /&gt;
					self.__class._alignClasses = nil&lt;br /&gt;
				else&lt;br /&gt;
					self._setAlign(self, self._sDefaultAlign)&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local attributes =&lt;br /&gt;
					not self.left2 and 'colspan=2' .. (self._alignClasses[1] and ' ' .. self._alignClasses[1] or '') or self._alignClasses[1]&lt;br /&gt;
				output[6] = '!' .. (attributes and attributes .. '|' or '') .. (self.left1 or ' ')&lt;br /&gt;
				output[7] = self.left2 and '!!' .. (self._alignClasses[2] and self._alignClasses[2] .. '|' or '') .. self.left2 or ''&lt;br /&gt;
				output[8] = '!!style=&amp;quot;width:' .. self.barwidth .. '&amp;quot;| '&lt;br /&gt;
				attributes =&lt;br /&gt;
					not self.right2 and 'colspan=2' .. (self._alignClasses[4] and ' ' .. self._alignClasses[4] or '') or self._alignClasses[3]&lt;br /&gt;
				output[9] = '!!' .. (attributes and attributes .. '|' or '') .. (self.right1 or self.right2 and ' ' or '')&lt;br /&gt;
				output[10] = self.right2 and '!!' .. (self._alignClasses[4] and self._alignClasses[4] .. '|' or '') .. self.right2 or ''&lt;br /&gt;
			output[11] = '\n'&lt;br /&gt;
&lt;br /&gt;
			output[12] = self.bars and self.bars .. '\n' or ''&lt;br /&gt;
&lt;br /&gt;
			if self.caption then&lt;br /&gt;
				output[15] = '\n[[Category:Pages using bar box with deprecated caption parameter]]'&lt;br /&gt;
			else&lt;br /&gt;
				output[15] = ''&lt;br /&gt;
			end&lt;br /&gt;
			output[13] = self.footer and&lt;br /&gt;
				'|- class=bb-default\n| colspan=5 style=&amp;quot;padding:5px 0&amp;quot; | ' .. -- &amp;lt;p&amp;gt; is created if \n precedes the footer&lt;br /&gt;
				self.footer .. '\n'&lt;br /&gt;
			or ''&lt;br /&gt;
		output[14] = '|}\n&amp;lt;/div&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
		return table.concat(output)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	__tostring = function (self)&lt;br /&gt;
		return self.html()&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	percent = function (args)&lt;br /&gt;
		local output = {}&lt;br /&gt;
		local percentage = (args[3] or '0') .. '%'&lt;br /&gt;
&lt;br /&gt;
		output[1] = '|-' .. (args.bg and 'style=&amp;quot;background:' .. args.bg .. '&amp;quot;' or '') .. '\n'&lt;br /&gt;
			output[2] = '|colspan=2 class=bb-min8|' .. (args[1] or ' ')&lt;br /&gt;
			output[3] = '||class=bb-b|'&lt;br /&gt;
				output[4] = '&amp;lt;div style=&amp;quot;background:' .. (args[2] or 'gray') .. '; width:' .. percentage .. '&amp;quot;&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;'&lt;br /&gt;
			output[5] = '||' .. (args.note and '' or 'colspan=2 class=bb-r|') .. (args[4] or percentage)&lt;br /&gt;
			output[6] = args.note and '||class=bb-r|' .. args.note or ''&lt;br /&gt;
&lt;br /&gt;
		return table.concat(output)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	pixel = function (args)&lt;br /&gt;
		local output = {}&lt;br /&gt;
		local pixels = args[3] or '0'&lt;br /&gt;
&lt;br /&gt;
		output[1] = '|-' .. (args.bg and 'style=&amp;quot;background:' .. args.bg .. '&amp;quot;' or '') .. '\n'&lt;br /&gt;
			output[2] = '|colspan=2|' .. (args[1] or ' ')&lt;br /&gt;
			output[3] = '||class=bb-b|'&lt;br /&gt;
				output[4] = '&amp;lt;div style=&amp;quot;background:' .. (args[2] or 'gray') .. '; width:' .. pixels .. 'px&amp;quot;&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;'&lt;br /&gt;
			output[5] = '||class=&amp;quot;bb-min3' .. (args.note and '&amp;quot;' or ' bb-r&amp;quot; colspan=2') .. '|' .. (args[5] or pixels .. (args[4] or ''))&lt;br /&gt;
			output[6] = args.note and '||class=bb-r|' .. args.note or ''&lt;br /&gt;
&lt;br /&gt;
		return table.concat(output)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	stacked = function (cls, args)&lt;br /&gt;
		local output = {}&lt;br /&gt;
&lt;br /&gt;
		output[1] = args.id and&lt;br /&gt;
			'|-class=&amp;quot;mw-collapsible' .. (args.collapsed and ' mw-collapsed' or '') .. '&amp;quot; id=mw-customcollapsible-' .. args.id .. '\n'&lt;br /&gt;
		or '|-\n'&lt;br /&gt;
			if not cls._alignClasses then&lt;br /&gt;
				cls._setAlign(cls, args.align and args.align:lower() or cls._sDefaultAlign)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local attributes =&lt;br /&gt;
				not args.note1 and 'colspan=2' .. (cls._alignClasses[1] and ' ' .. cls._alignClasses[1] or '') or cls._alignClasses[1]&lt;br /&gt;
			output[2] = '|' .. (attributes and attributes .. '|' or '') .. (args[1] or ' ')&lt;br /&gt;
			output[3] = args.note1 and '||' .. (cls._alignClasses[2] and cls._alignClasses[2] .. '|' or '') .. args.note1 or ''&lt;br /&gt;
			output[4] = '||class=bb-b|'&lt;br /&gt;
&lt;br /&gt;
				local len = 0 -- can't use #args because of [[Module:Arguments#Known limitations]]&lt;br /&gt;
				for k in pairs(args) do&lt;br /&gt;
					local idx = tonumber(k) or 0&lt;br /&gt;
					if idx &amp;gt; len then len = idx end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if args.bkgclasses then -- used when wikitext minimization is essential&lt;br /&gt;
					for i = 1, len-2 do&lt;br /&gt;
						local width, delim, title --is delim reset every cycle?&lt;br /&gt;
						width = args[i+2] or 0&lt;br /&gt;
						width = tonumber(('%.2f'):format(width))&lt;br /&gt;
						if width &amp;gt; 0 then&lt;br /&gt;
							if not delim then -- assuming title types are consistent&lt;br /&gt;
								delim = tonumber(args['title' .. i]) and '' or '&amp;quot;'&lt;br /&gt;
							end&lt;br /&gt;
							title = args['title' .. i] and ' title=' .. delim .. args['title' .. i] .. delim or ''&lt;br /&gt;
							output[#output+1] =&lt;br /&gt;
								'&amp;lt;div' .. title .. ' class=' .. args.bkgclasses[i] .. ' style=width:' .. width .. 'px&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;'&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					for i = 1, (len-2) / 2 do&lt;br /&gt;
						local width, title, background&lt;br /&gt;
						width = args[2*i + 2] or 0&lt;br /&gt;
						width = tonumber(('%.2f'):format(width))&lt;br /&gt;
						if width &amp;gt; 0 then&lt;br /&gt;
							title = args['title' .. i] and ' title=&amp;quot;' .. args['title' .. i] .. '&amp;quot;' or ''&lt;br /&gt;
							background = args[2*i + 1] or 'gray'&lt;br /&gt;
							output[#output+1] =&lt;br /&gt;
								'&amp;lt;div' .. title .. ' style=&amp;quot;background:' .. background .. '; width:' .. width .. 'px&amp;quot;&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;'&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if #output == 4 then&lt;br /&gt;
					output[5] = ' '&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
			attributes =&lt;br /&gt;
				not args.note2 and 'colspan=2' .. (cls._alignClasses[4] and ' ' .. cls._alignClasses[4] or '') or cls._alignClasses[3]&lt;br /&gt;
			output[#output+1] = '||' .. (attributes and attributes .. '|' or '') .. (args[2] or args.note2 and ' ' or '')&lt;br /&gt;
			output[#output+1] = args.note2 and '||' .. (cls._alignClasses[4] and cls._alignClasses[4] .. '|' or '') .. args.note2 or ''&lt;br /&gt;
&lt;br /&gt;
		return table.concat(output)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	gap = function (args)&lt;br /&gt;
		local output = {}&lt;br /&gt;
		local height = tonumber(args.height) and args.height .. 'px' or args.height and args.height:lower() or '10px'&lt;br /&gt;
&lt;br /&gt;
		output[1] = '|-\n'&lt;br /&gt;
			output[2] = '|colspan=5 style=&amp;quot;height:' .. height .. '&amp;quot;|' .. (args[1] or '')&lt;br /&gt;
&lt;br /&gt;
		return table.concat(output)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	__classmethods = {'create', 'stacked'},&lt;br /&gt;
	__staticmethods = {'_setAlign', 'percent', 'pixel', 'gap'},&lt;br /&gt;
	__slots = {'_alignClasses'}&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {BarBox=BarBox}&lt;br /&gt;
&lt;br /&gt;
function p.box(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local box = BarBox.create(args)&lt;br /&gt;
	return tostring(box)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.percent(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return BarBox.percent(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.pixel(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return BarBox.pixel(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.stacked(frame)&lt;br /&gt;
	local yesno = require('Module:Yesno')&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			if value then&lt;br /&gt;
				if key == 'collapsed' then&lt;br /&gt;
					return yesno(value)&lt;br /&gt;
				elseif key == 'bkgclasses' then&lt;br /&gt;
					return mw.text.jsonDecode(value) -- string to table&lt;br /&gt;
				end&lt;br /&gt;
				value = mw.text.trim(value)&lt;br /&gt;
				if value ~= '' then&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
	return BarBox.stacked(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gap(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return BarBox.gap(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>