<?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%3ADimensions</id>
	<title>وحدة:Dimensions - تاريخ المراجعة</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%3ADimensions"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Dimensions&amp;action=history"/>
	<updated>2026-06-05T04:28:03Z</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:Dimensions&amp;diff=2073&amp;oldid=prev</id>
		<title>عبد العزيز في 00:33، 26 مارس 2021</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Dimensions&amp;diff=2073&amp;oldid=prev"/>
		<updated>2021-03-26T00:33:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- version 20210322 from master @cawiki&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local claim = require(&amp;#039;Module:Wikidata.Ca&amp;#039;).claim&lt;br /&gt;
local i18n = {&lt;br /&gt;
	[&amp;quot;categoryprop&amp;quot;] = &amp;quot;تصنيف:صفحات تستخدم خاصية $1&amp;quot;, -- Category:Pages using Wikidata property $1 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame.args or frame -- via invoke or require&lt;br /&gt;
	local pargs = frame.args and frame:getParent().args or {}&lt;br /&gt;
	local id = args.item or pargs.item&lt;br /&gt;
	if id == nil or id == &amp;#039;&amp;#039; then&lt;br /&gt;
		id = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	end&lt;br /&gt;
	local unit = args.unit or pargs.unit; if unit == &amp;quot;&amp;quot; then unit = nil end&lt;br /&gt;
	local blacklist = {}&lt;br /&gt;
	for qid in mw.text.gsplit(args.blacklist or &amp;quot;&amp;quot;, &amp;quot;/&amp;quot;, true) do&lt;br /&gt;
		blacklist[qid] = true&lt;br /&gt;
	end&lt;br /&gt;
	local lang = args.lang or pargs.lang&lt;br /&gt;
	&lt;br /&gt;
	-- Fetch all data and fill a table&lt;br /&gt;
	local data = {}&lt;br /&gt;
	local labels = {}&lt;br /&gt;
	local cats = &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	local function fillData(prop, dimension, value)&lt;br /&gt;
		if type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			if mw.ustring.match(value, &amp;#039;[%a]+&amp;#039;) then&lt;br /&gt;
				data[#data + 1] = {}&lt;br /&gt;
				data[#data].dimension = dimension&lt;br /&gt;
				data[#data].amount = mw.ustring.match(value, &amp;#039;[^%a]+&amp;#039;)&lt;br /&gt;
				data[#data].unit = mw.ustring.match(value, &amp;#039;[%a]+&amp;#039;)&lt;br /&gt;
				for p in mw.text.gsplit(prop, &amp;#039; OR &amp;#039;, true) do&lt;br /&gt;
					labels[dimension] = mw.wikibase.getLabel(p) or id&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local fetch = claim{&lt;br /&gt;
			item = id, lang = lang, editicon = false,&lt;br /&gt;
			formatting = &amp;#039;table&amp;#039;, separator = &amp;#039;&amp;lt;and&amp;gt;&amp;#039;,&lt;br /&gt;
			property = prop, colformat0 = &amp;#039;unitcode&amp;#039;, convert0 = unit,&lt;br /&gt;
			qualifier = &amp;#039;P518 OR P1013&amp;#039;, colformat1 = &amp;#039;raw&amp;#039;,&lt;br /&gt;
			qualifier2 = &amp;#039;P518 OR P1013&amp;#039;, colformat2 = &amp;#039;label&amp;#039;,&lt;br /&gt;
			rowformat = &amp;#039;$0$1&amp;#039;, rowsubformat1 = &amp;#039;($1=$2)&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
		if fetch then &lt;br /&gt;
			for p in mw.text.gsplit(prop, &amp;#039; OR &amp;#039;, true) do&lt;br /&gt;
				if #mw.wikibase.getAllStatements(id, p) &amp;gt; 0 then&lt;br /&gt;
					labels[dimension] = mw.wikibase.getLabel(p) or id&lt;br /&gt;
					cats  = cats .. &amp;quot;[[&amp;quot; .. string.gsub(i18n.categoryprop, &amp;#039;$1&amp;#039;, p) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			for dim in mw.text.gsplit(fetch, &amp;#039;&amp;lt;and&amp;gt;&amp;#039;, true) do&lt;br /&gt;
				if mw.ustring.match(dim, &amp;#039;[%a]+&amp;#039;) then -- units constraint&lt;br /&gt;
					data[#data + 1] = {}&lt;br /&gt;
					data[#data].dimension = dimension&lt;br /&gt;
					local group = mw.ustring.match(dim, &amp;#039;%b()&amp;#039;)&lt;br /&gt;
					if group then&lt;br /&gt;
						group_parts = mw.text.split(mw.ustring.sub(group, 2, -2), &amp;#039;=&amp;#039;, true)&lt;br /&gt;
						data[#data].group = group_parts[2]&lt;br /&gt;
						if blacklist[group_parts[1]] then&lt;br /&gt;
							blacklist[group_parts[2]] = true&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					data[#data].amount = mw.ustring.match(dim, &amp;#039;[^%a]+&amp;#039;)&lt;br /&gt;
					data[#data].unit = mw.ustring.match(dim, &amp;#039;[%a]+&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- diameter&lt;br /&gt;
	fillData(&amp;#039;P2386&amp;#039;, &amp;#039;diameter&amp;#039;,args[&amp;#039;diameter&amp;#039;])&lt;br /&gt;
	-- height and alike&lt;br /&gt;
	fillData(&amp;#039;P2048&amp;#039;, &amp;#039;height&amp;#039;,args[&amp;#039;height&amp;#039;])&lt;br /&gt;
	fillData(&amp;#039;P2262&amp;#039;, &amp;#039;draft&amp;#039;,args[&amp;#039;draft&amp;#039;])&lt;br /&gt;
	fillData(&amp;#039;P2793&amp;#039;, &amp;#039;clearance&amp;#039;,args[&amp;#039;clearance&amp;#039;])&lt;br /&gt;
	-- width or beam&lt;br /&gt;
	fillData(&amp;#039;P2049 OR P2261&amp;#039;, &amp;#039;width&amp;#039;,args[&amp;#039;width&amp;#039;])&lt;br /&gt;
	-- length or depth and alike&lt;br /&gt;
	fillData(&amp;#039;P2043 OR P5524&amp;#039;, &amp;#039;length&amp;#039;,args[&amp;#039;length&amp;#039;])&lt;br /&gt;
	fillData(&amp;#039;P2787&amp;#039;, &amp;#039;span&amp;#039;,args[&amp;#039;span&amp;#039;])&lt;br /&gt;
	fillData(&amp;#039;P2610&amp;#039;, &amp;#039;thickness&amp;#039;,args[&amp;#039;thickness&amp;#039;])&lt;br /&gt;
	&lt;br /&gt;
	-- group by qualifier&lt;br /&gt;
	local dimensions = {}&lt;br /&gt;
	local global_unit&lt;br /&gt;
	for i, v in ipairs(data) do&lt;br /&gt;
		local index = v.group or 1&lt;br /&gt;
		if blacklist[index] == nil then&lt;br /&gt;
			if dimensions[index] == nil then&lt;br /&gt;
				dimensions[index] = {}&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(dimensions[index], {[&amp;quot;dimension&amp;quot;]=v.dimension, [&amp;quot;amount&amp;quot;]=v.amount, [&amp;quot;unit&amp;quot;]=v.unit})&lt;br /&gt;
			-- global unit&lt;br /&gt;
			if i == 1 then&lt;br /&gt;
				global_unit = v.unit&lt;br /&gt;
			elseif global_unit and global_unit ~= v.unit then&lt;br /&gt;
				global_unit = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- format output&lt;br /&gt;
	local icons = {&lt;br /&gt;
		[&amp;quot;diameter&amp;quot;] = &amp;quot;[[File:Durchschnittszeichen.png|10px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;height&amp;quot;] = &amp;quot;[[File:Chess uat45.svg|15px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;draft&amp;quot;] = &amp;quot;[[File:Breezeicons-actions-22-draw-halfcircle4.svg|15px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;clearance&amp;quot;] = &amp;quot;[[File:Breezeicons-actions-22-format-align-vertical-top.svg|15px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;width&amp;quot;] = &amp;quot;[[File:Chess lrt45.svg|15px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;length&amp;quot;] = &amp;quot;[[File:Chess urt45.svg|15px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;span&amp;quot;] = &amp;quot;[[File:Breezeicons-actions-22-draw-halfcircle3.svg|15px|link=|&amp;quot;,&lt;br /&gt;
		[&amp;quot;thickness&amp;quot;] = &amp;quot;[[File:Breezeicons-actions-22-format-align-vertical-center.svg|15px|link=|&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
	local dim_sort = {[&amp;quot;diameter&amp;quot;]=1, [&amp;quot;height&amp;quot;]=2, [&amp;quot;draft&amp;quot;]=3, [&amp;quot;clearance&amp;quot;]=4, [&amp;quot;width&amp;quot;]=5, [&amp;quot;length&amp;quot;]=6, [&amp;quot;span&amp;quot;]=7, [&amp;quot;thickness&amp;quot;]=8}&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for q, t in pairs(dimensions) do&lt;br /&gt;
		if type(q) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			table.insert(out, q .. &amp;quot;:&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(t, function(a, b) return dim_sort[a.dimension] &amp;lt; dim_sort[b.dimension] end)&lt;br /&gt;
		for i, v in ipairs(t) do&lt;br /&gt;
			local suffix = &amp;quot; (&amp;quot; .. icons[v.dimension] .. labels[v.dimension] .. &amp;quot;]])&amp;quot;&lt;br /&gt;
			if i == #t or not global_unit then&lt;br /&gt;
				suffix = suffix .. &amp;quot; &amp;quot; .. v.unit&lt;br /&gt;
			end&lt;br /&gt;
			if i &amp;lt; #t then&lt;br /&gt;
				suffix = suffix .. &amp;quot; ×&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;#039;&amp;lt;span style=&amp;quot;white-space:nowrap;&amp;quot;&amp;gt;&amp;#039; .. v.amount .. suffix .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(out, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    if mw.title.getCurrentTitle().namespace == 0 and cats ~=&amp;#039;&amp;#039; then table.insert(out, cats)   end&lt;br /&gt;
	&lt;br /&gt;
	local ans = mw.text.trim(table.concat(out, &amp;quot; &amp;quot;))&lt;br /&gt;
    if(ans == &amp;#039;&amp;#039;) then return nil else return ans end&lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>