<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3ABar_box2</id>
	<title>وحدة:Bar box2 - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3ABar_box2"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Bar_box2&amp;action=history"/>
	<updated>2026-06-05T03:56:55Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Bar_box2&amp;diff=2277&amp;oldid=prev</id>
		<title>عبد العزيز: أنشأ الصفحة ب&#039;require(&#039;Module:Lua class&#039;) require(&#039;Module:No globals&#039;)  local BarBox = class(&#039;BarBox&#039;, { 	_css = &#039;Module:Bar box/styles.css&#039;,  	__init = function (self, args) 		self.css			 = args[1]  or args.css 		self.float			 = args[2]  or args.float or &#039;none&#039; 		self.backgroundcolor = args[3]  or args.backgroundcolor or &#039;white&#039; 		self.borderwidth	 = args[4]  or args.borderwidth or &#039;1&#039; 		self.style			 = args[5]  or args.style 		self.width			 = args[6]  or args.width-- or &#039;auto&#039;...&#039;</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Bar_box2&amp;diff=2277&amp;oldid=prev"/>
		<updated>2022-01-14T19:23:23Z</updated>

		<summary type="html">&lt;p&gt;أنشأ الصفحة ب&amp;#039;require(&amp;#039;Module:Lua class&amp;#039;) require(&amp;#039;Module:No globals&amp;#039;)  local BarBox = class(&amp;#039;BarBox&amp;#039;, { 	_css = &amp;#039;Module:Bar box/styles.css&amp;#039;,  	__init = function (self, args) 		self.css			 = args[1]  or args.css 		self.float			 = args[2]  or args.float or &amp;#039;none&amp;#039; 		self.backgroundcolor = args[3]  or args.backgroundcolor or &amp;#039;white&amp;#039; 		self.borderwidth	 = args[4]  or args.borderwidth or &amp;#039;1&amp;#039; 		self.style			 = args[5]  or args.style 		self.width			 = args[6]  or args.width-- or &amp;#039;auto&amp;#039;...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Module:Lua class&amp;#039;)&lt;br /&gt;
require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local BarBox = class(&amp;#039;BarBox&amp;#039;, {&lt;br /&gt;
	_css = &amp;#039;Module:Bar box/styles.css&amp;#039;,&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 &amp;#039;none&amp;#039;&lt;br /&gt;
		self.backgroundcolor = args[3]  or args.backgroundcolor or &amp;#039;white&amp;#039;&lt;br /&gt;
		self.borderwidth	 = args[4]  or args.borderwidth or &amp;#039;1&amp;#039;&lt;br /&gt;
		self.style			 = args[5]  or args.style&lt;br /&gt;
		self.width			 = args[6]  or args.width-- or &amp;#039;auto&amp;#039;&lt;br /&gt;
		self.barwidth		 = args[7]  or args.barwidth or &amp;#039;100px&amp;#039;&lt;br /&gt;
		self.lineheight		 = args[8]  or args.lineheight-- or &amp;#039;1.6&amp;#039;&lt;br /&gt;
		self.title			 = args[9]  or args.title&lt;br /&gt;
		self.titlebar		 = args[10] or args.titlebar-- or &amp;#039;none&amp;#039;&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 .. &amp;#039;px&amp;#039; or args.width and args.width:lower()&lt;br /&gt;
		args.barwidth = tonumber(args.barwidth) and args.barwidth .. &amp;#039;px&amp;#039; or args.barwidth and args.barwidth:lower()&lt;br /&gt;
		return cls(args)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	_sDefaultAlign = &amp;#039;lrlr&amp;#039;,&lt;br /&gt;
	_tDefaultAlign = {false, &amp;#039;r&amp;#039;, false, &amp;#039;r&amp;#039;},&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 == &amp;#039;l&amp;#039; then&lt;br /&gt;
				a = false&lt;br /&gt;
			elseif a == &amp;#039;d&amp;#039; then&lt;br /&gt;
				a = d&lt;br /&gt;
			elseif a ~= &amp;#039;c&amp;#039; and a ~= &amp;#039;r&amp;#039; then&lt;br /&gt;
				error(&amp;#039;unrecognized align[&amp;#039; .. i .. &amp;#039;]&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			obj._alignClasses[i] = a and &amp;#039;class=bb-&amp;#039; .. 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(&amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, {src=self._css}) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
		output[2] = self.css and frame:extensionTag(&amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, {src=self.css}) .. &amp;#039;\n&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		local class = &amp;#039;barbox&amp;#039;&lt;br /&gt;
		if self.float == &amp;#039;left&amp;#039; or self.float == &amp;#039;right&amp;#039; then&lt;br /&gt;
			class = class .. &amp;#039; t&amp;#039; .. self.float&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		output[3] =&lt;br /&gt;
			&amp;#039;&amp;lt;div class=&amp;quot;&amp;#039; .. class .. &amp;#039;&amp;quot; style=&amp;quot;background:&amp;#039; .. self.backgroundcolor ..&lt;br /&gt;
			&amp;#039;; border:&amp;#039; .. self.borderwidth .. &amp;#039;px solid silver&amp;#039; ..&lt;br /&gt;
			(self.float == &amp;#039;center&amp;#039; and &amp;#039;; margin:0 auto&amp;#039; or &amp;#039;&amp;#039;) ..&lt;br /&gt;
			(self.width and &amp;#039;; width:&amp;#039; .. self.width or &amp;#039;&amp;#039;) ..&lt;br /&gt;
			(self.style and &amp;#039;; &amp;#039; .. self.style or &amp;#039;&amp;#039;) .. &amp;#039;&amp;quot;&amp;gt;\n&amp;#039; ..&lt;br /&gt;
				&amp;#039;{|&amp;#039; .. (self.lineheight and &amp;#039; style=&amp;quot;line-height:&amp;#039; .. self.lineheight .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
&lt;br /&gt;
			output[4] = self.title and&lt;br /&gt;
				&amp;#039;|+ class=bb-default&amp;#039; .. (self.titlebar and &amp;#039; style=&amp;quot;background:&amp;#039; .. self.titlebar .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039; |\n&amp;#039; ..&lt;br /&gt;
				self.title .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
			output[5] = &amp;#039;|- class=bb-default style=&amp;quot;font-size:88%; min-height:4px&amp;quot;\n&amp;#039;&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 &amp;#039;colspan=2&amp;#039; .. (self._alignClasses[1] and &amp;#039; &amp;#039; .. self._alignClasses[1] or &amp;#039;&amp;#039;) or self._alignClasses[1]&lt;br /&gt;
				output[6] = &amp;#039;!&amp;#039; .. (attributes and attributes .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. (self.left1 or &amp;#039; &amp;#039;)&lt;br /&gt;
				output[7] = self.left2 and &amp;#039;!!&amp;#039; .. (self._alignClasses[2] and self._alignClasses[2] .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. self.left2 or &amp;#039;&amp;#039;&lt;br /&gt;
				output[8] = &amp;#039;!!style=&amp;quot;width:&amp;#039; .. self.barwidth .. &amp;#039;&amp;quot;| &amp;#039;&lt;br /&gt;
				attributes =&lt;br /&gt;
					not self.right2 and &amp;#039;colspan=2&amp;#039; .. (self._alignClasses[4] and &amp;#039; &amp;#039; .. self._alignClasses[4] or &amp;#039;&amp;#039;) or self._alignClasses[3]&lt;br /&gt;
				output[9] = &amp;#039;!!&amp;#039; .. (attributes and attributes .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. (self.right1 or self.right2 and &amp;#039; &amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
				output[10] = self.right2 and &amp;#039;!!&amp;#039; .. (self._alignClasses[4] and self._alignClasses[4] .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. self.right2 or &amp;#039;&amp;#039;&lt;br /&gt;
			output[11] = &amp;#039;\n&amp;#039;&lt;br /&gt;
&lt;br /&gt;
			output[12] = self.bars and self.bars .. &amp;#039;\n&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
			if self.caption then&lt;br /&gt;
				output[15] = &amp;#039;\n[[Category:Pages using bar box with deprecated caption parameter]]&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				output[15] = &amp;#039;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			output[13] = self.footer and&lt;br /&gt;
				&amp;#039;|- class=bb-default\n| colspan=5 style=&amp;quot;padding:5px 0&amp;quot; | &amp;#039; .. -- &amp;lt;p&amp;gt; is created if \n precedes the footer&lt;br /&gt;
				self.footer .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			or &amp;#039;&amp;#039;&lt;br /&gt;
		output[14] = &amp;#039;|}\n&amp;lt;/div&amp;gt;&amp;#039;&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 &amp;#039;0&amp;#039;) .. &amp;#039;%&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		output[1] = &amp;#039;|-&amp;#039; .. (args.bg and &amp;#039;style=&amp;quot;background:&amp;#039; .. args.bg .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			output[2] = &amp;#039;|colspan=2 class=bb-min8|&amp;#039; .. (args[1] or &amp;#039; &amp;#039;)&lt;br /&gt;
			output[3] = &amp;#039;||class=bb-b|&amp;#039;&lt;br /&gt;
				output[4] = &amp;#039;&amp;lt;div style=&amp;quot;background:&amp;#039; .. (args[2] or &amp;#039;gray&amp;#039;) .. &amp;#039;; width:&amp;#039; .. percentage .. &amp;#039;&amp;quot;&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
			output[5] = &amp;#039;||&amp;#039; .. (args.note and &amp;#039;&amp;#039; or &amp;#039;colspan=2 class=bb-r|&amp;#039;) .. (args[4] or percentage)&lt;br /&gt;
			output[6] = args.note and &amp;#039;||class=bb-r|&amp;#039; .. args.note or &amp;#039;&amp;#039;&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 &amp;#039;0&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		output[1] = &amp;#039;|-&amp;#039; .. (args.bg and &amp;#039;style=&amp;quot;background:&amp;#039; .. args.bg .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			output[2] = &amp;#039;|colspan=2|&amp;#039; .. (args[1] or &amp;#039; &amp;#039;)&lt;br /&gt;
			output[3] = &amp;#039;||class=bb-b|&amp;#039;&lt;br /&gt;
				output[4] = &amp;#039;&amp;lt;div style=&amp;quot;background:&amp;#039; .. (args[2] or &amp;#039;gray&amp;#039;) .. &amp;#039;; width:&amp;#039; .. pixels .. &amp;#039;px&amp;quot;&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
			output[5] = &amp;#039;||class=&amp;quot;bb-min3&amp;#039; .. (args.note and &amp;#039;&amp;quot;&amp;#039; or &amp;#039; bb-r&amp;quot; colspan=2&amp;#039;) .. &amp;#039;|&amp;#039; .. (args[5] or pixels .. (args[4] or &amp;#039;&amp;#039;))&lt;br /&gt;
			output[6] = args.note and &amp;#039;||class=bb-r|&amp;#039; .. args.note or &amp;#039;&amp;#039;&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;
			&amp;#039;|-class=&amp;quot;mw-collapsible&amp;#039; .. (args.collapsed and &amp;#039; mw-collapsed&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;&amp;quot; id=mw-customcollapsible-&amp;#039; .. args.id .. &amp;#039;\n&amp;#039;&lt;br /&gt;
		or &amp;#039;|-\n&amp;#039;&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 &amp;#039;colspan=2&amp;#039; .. (cls._alignClasses[1] and &amp;#039; &amp;#039; .. cls._alignClasses[1] or &amp;#039;&amp;#039;) or cls._alignClasses[1]&lt;br /&gt;
			output[2] = &amp;#039;|&amp;#039; .. (attributes and attributes .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. (args[1] or &amp;#039; &amp;#039;)&lt;br /&gt;
			output[3] = args.note1 and &amp;#039;||&amp;#039; .. (cls._alignClasses[2] and cls._alignClasses[2] .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. args.note1 or &amp;#039;&amp;#039;&lt;br /&gt;
			output[4] = &amp;#039;||class=bb-b|&amp;#039;&lt;br /&gt;
&lt;br /&gt;
				local len = 0 -- can&amp;#039;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((&amp;#039;%.2f&amp;#039;):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[&amp;#039;title&amp;#039; .. i]) and &amp;#039;&amp;#039; or &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
							end&lt;br /&gt;
							title = args[&amp;#039;title&amp;#039; .. i] and &amp;#039; title=&amp;#039; .. delim .. args[&amp;#039;title&amp;#039; .. i] .. delim or &amp;#039;&amp;#039;&lt;br /&gt;
							output[#output+1] =&lt;br /&gt;
								&amp;#039;&amp;lt;div&amp;#039; .. title .. &amp;#039; class=&amp;#039; .. args.bkgclasses[i] .. &amp;#039; style=width:&amp;#039; .. width .. &amp;#039;px&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;&amp;#039;&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((&amp;#039;%.2f&amp;#039;):format(width))&lt;br /&gt;
						if width &amp;gt; 0 then&lt;br /&gt;
							title = args[&amp;#039;title&amp;#039; .. i] and &amp;#039; title=&amp;quot;&amp;#039; .. args[&amp;#039;title&amp;#039; .. i] .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
							background = args[2*i + 1] or &amp;#039;gray&amp;#039;&lt;br /&gt;
							output[#output+1] =&lt;br /&gt;
								&amp;#039;&amp;lt;div&amp;#039; .. title .. &amp;#039; style=&amp;quot;background:&amp;#039; .. background .. &amp;#039;; width:&amp;#039; .. width .. &amp;#039;px&amp;quot;&amp;gt;&amp;amp;#8203;&amp;lt;/div&amp;gt;&amp;#039;&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] = &amp;#039; &amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
			attributes =&lt;br /&gt;
				not args.note2 and &amp;#039;colspan=2&amp;#039; .. (cls._alignClasses[4] and &amp;#039; &amp;#039; .. cls._alignClasses[4] or &amp;#039;&amp;#039;) or cls._alignClasses[3]&lt;br /&gt;
			output[#output+1] = &amp;#039;||&amp;#039; .. (attributes and attributes .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. (args[2] or args.note2 and &amp;#039; &amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
			output[#output+1] = args.note2 and &amp;#039;||&amp;#039; .. (cls._alignClasses[4] and cls._alignClasses[4] .. &amp;#039;|&amp;#039; or &amp;#039;&amp;#039;) .. args.note2 or &amp;#039;&amp;#039;&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 .. &amp;#039;px&amp;#039; or args.height and args.height:lower() or &amp;#039;10px&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		output[1] = &amp;#039;|-\n&amp;#039;&lt;br /&gt;
			output[2] = &amp;#039;|colspan=5 style=&amp;quot;height:&amp;#039; .. height .. &amp;#039;&amp;quot;|&amp;#039; .. (args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		return table.concat(output)&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
	__classmethods = {&amp;#039;create&amp;#039;, &amp;#039;stacked&amp;#039;},&lt;br /&gt;
	__staticmethods = {&amp;#039;_setAlign&amp;#039;, &amp;#039;percent&amp;#039;, &amp;#039;pixel&amp;#039;, &amp;#039;gap&amp;#039;},&lt;br /&gt;
	__slots = {&amp;#039;_alignClasses&amp;#039;}&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {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(&amp;#039;Module:Yesno&amp;#039;)&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 == &amp;#039;collapsed&amp;#039; then&lt;br /&gt;
					return yesno(value)&lt;br /&gt;
				elseif key == &amp;#039;bkgclasses&amp;#039; 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 ~= &amp;#039;&amp;#039; 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>عبد العزيز</name></author>
	</entry>
</feed>