يمكن إنشاء صفحة توثيق الوحدة في وحدة:Wikidata/تتبع/شرح

local p = {}

function trim(s)
		--Removes leading zeroes from value
		if s:sub(1,1)=="P" then return s:sub(2)
		else return s
		end
	end
local function category(propertyid,q,nocate)
        main = '[[تصنيف:صفحات بها بيانات ويكي بيانات|'.. trim(propertyid) ..']]'
	if nocate and nocate  ~= ''  
		then -- to hide the category
	 		return ''
	 	elseif q and q  ~= ''  
		then 
	 		return q..''..main 
	end
	d = mw.text.trim(propertyid)
	s = list(d)
	if s then
		return '[[تصنيف:'.. s ..']]'..main  -- linktext(s)
	end
end

local function icons(u,id,noicon,icon2)
	if noicon and noicon  ~= ''  
		then -- to hide the icon
	 		return ''
	end
	local label = mw.wikibase.label(u) --{{#invoke:Wikibase|label| u }}
		if label ==nil or not label 
			then label ='' 
			else
		end

	local temp =  label .. ' ('.. u ..')'
	local ico =  'Twemoji_270f.svg|13px'
		if icon2 and icon2 ~='' then 
			ico = 'Wikidata-logo.svg|20px' 
			size = '20px' 
			end
	local so = 'تعديل قيمة خاصية ' .. temp ..' في ويكي بيانات'
	local im =' [[ملف:'.. ico .. '|baseline|link=d:'.. (id or '') .. '#'.. u ..'|'.. so .. ']]'
	local noprint=  '<span class="noprint">'.. im ..'</span>'
	local sup=  '<sup>'.. noprint ..'</sup>'
	if u then
		return noprint
	end
end

local function xt(e)
		return  'صفحات تستخدم خاصية '.. e
end

local function wd(e)
		return e .. ' من ويكي بيانات'
end

local categorieskey = {
	['7']	 = 'أخ'
	,['9']	 = 'أخت'
	,['18']	 = 'صور'
	,['19']	 = 'مكان ميلاد'
	,['20']	 = 'مكان وفاة'
	,['22']	 = 'والد'
	,['25']	 = 'والدة'
	,['27']	 = 'مواطنة شخص'
	,['37']	 = 'لغة رسمية'
	,['38']	 = 'عملة'
	,['39']	 = 'منصب'
	,['41']	 = 'علم'
	,['50']	 = 'مؤلف'
	,['53']	 = 'عائلة'
	,['54']	 = 'فرق لاعب'
	,['57']	 = 'مخرج'
	,['58']	 = 'سيناريو'
	,['61']	 = 'مكتشف'
	,['66']	 = 'مسقط رأس شخص'
	,['69']	 = 'مدرسة أم'
	,['84']	 = 'مهندس معماري'
	,['86']	 = 'موسيقي'
	,['94']	 = 'شعار نبالة'
	,['98']	 = 'محرر'
	,['101']	 = 'مجال عمل'
	,['106']	 = 'مهنة'
	,['112']	 = 'مؤسس'
	,['115']	 = 'ملعب'
	,['119']	 = 'مكان دفن شخص'
	,['123']	 = 'ناشر'
	,['127']	 = 'مالك'
	,['136']	 = 'نوع فني'
	,['137']	 = 'مشغل'
	,['138']	 = 'سبب تسمية'
	,['140']	 = 'ديانة'
	,['141']	 = 'حالة حفظ'
	,['144']	 = 'عمل أصلي'
	,['154']	 = 'شعار'
	,['155']	 = 'سبقه'
	,['156']	 = 'تبعه'
	,['159']	 = 'مقر رئيسي'
	,['162']	 = 'منتج'
	,['166']	 = 'جوائز'
	,['169']	 = 'مدير تنفيذي لشركة'
	,['170']	 = 'مخترع'
	,['172']	 = 'عرقية شخص'
	,['178']	 = 'مطور'
	,['179']	 = 'سلسلة'
	,['184']	 = 'مشرف الدكتوراة'
	,['185']	 = 'طلاب دكتوراة'
	,['218']	 = 'رمز أيزو 639-1'
	,['219']	 = 'رمز أيزو 3166-2'
	,['219']	 = 'رمز أيزو 639-2'
	,['220']	 = 'رمز أيزو 639-3'
	,['221']	 = 'رمز أيزو 639-6'
	,['225']	 = 'تسمية علمية'
	,['241']	 = 'فرع عسكري'
	,['243']	 = 'معرف Oclc'
	,['249']	 = 'رمز شركة بالبورصة'
	,['263']	 = 'مقر رسمي'
	,['264']	 = 'شركة تسجيلات'
	,['274']	 = 'صيغة جزيئية'
	,['277']	 = 'لغة برمجة'
	,['279']	 = 'نوع فرعي'
	,['286']	 = 'مدرب'
	,['287']	 = 'مصمم'
	,['297']	 = 'رمز أيزو 3166-1'
	,['300']	 = 'رمز أيزو 3166-2'
	,['306']	 = 'نظام تشغيل'
	,['344']	 = 'مصور سينمائي'
	,['355']	 = 'شركات فرعية'
	,['364']	 = 'لغة'
	,['373']	 = 'قالب تصنيف كومنز بوصلة'
	,['404']	 = 'نمط لعبة'
	,['405']	 = 'واضع تسمية علمية'
	,['408']	 = 'محرك'
	,['412']	 = 'طبقة صوتية'
	,['413']	 = 'مركز لاعب'
	,['425']	 = 'مجال مهنة'
	,['428']	 = 'اختصار عالم نبات'
	,['434']	 = 'معرف ميوزك برينز للفنانين'
	,['449']	 = 'شبكة البث'
	,['452']	 = 'صناعة شركة'
	,['463']	 = 'عضو في'
	--,['480']	 = 'معرف فيلمافينيتي'
	,['493']	 = 'كود ICD9'
	,['494']	 = 'كود ICD10'
	,['498']	 = 'رمز أيزو 4217'
	,['509']	 = 'سبب وفاة'
	,['598']	 = 'قيادات شخص'
	,['1035']	 = 'لاحقة شرفية'
	,['512']	 = 'شهادة جامعية'
	,['527']	 = 'مكونات'
	,['555']	 = 'سجل الفوز زوجي'
	,['563']	 = 'كود ICDO'
	,['564']	 = 'سجل الفوز فردي'
	,['569']	 = 'تاريخ ميلاد'
	,['570']	 = 'تاريخ وفاة'
	,['574']	 = 'تاريخ وضع تسمية علمية'
	,['607']	 = 'معارك'
	,['625']	 = 'احداثيات'
	,['634']	 = 'كابتن'
	,['646']	 = 'قالب فريبيس يستخدم بيانات'
	,['648']	 = 'معرف المكتبة المفتوحة'
	--,['746']	 = 'تاريخ الاختفاء'
	,['748']	 = 'معين'
	,['749']	 = 'شركة أم'
	,['750']	 = 'موزع فيلم'
	,['757']	 = 'معرف موقع تراث'
	,['802']	 = 'طلاب'
	,['812']	 = 'تخصص أكاديمي'
	,['835']	 = 'اختصار عالم حيوان'
	--,['856']	 = 'موقع رسمي بوصلة'
	,['915']	 = 'موقع تصوير'
	,['921']	 = 'موضوع رئيسي'
	,['935']	 = 'وصلة كومنز'
	,['957']	 = 'معرف ISBN'
	,['1006']	 = 'معرف القاموس الوطني لأسماء المؤلفين'
	,['1036']	 = 'معرف Dewey'
	,['1040']	 = 'مونتاج'
	,['1050']	 = 'مشكلة صحية'
	,['1056']	 = 'منتجات شركة'
	,['1098']	 = 'عدد المتحدثين'
	,['1104']	 = 'عدد الصفحات'
	,['1120']	 = 'وفيات'
	,['1128']	 = 'عدد موظفي شركة'
	,['1132']	 = 'عدد المشاركين'
	,['1146']	 = 'قالب اتحاد ألعاب القوى يستخدم بيانات'
	--,['1220']	 = 'معرف شخص في قاعدة بيانات برودواي على الانترنت'
	,['1233']	 = 'قالب اسفدب يستخدم بيانات'
	--,['1237']	 = 'معرف فيلم بوكس أوفيس موجو'
	--,['1258']	 = 'معرف موقع الطماطم الفاسدة'
	--,['1263']	 = 'معرف شخص في ان ان دي بي'
	--,['1265']	 = 'معرف ألو سيني'
	--,['1266']	 = 'معرف شخص في ألو سيني'
	,['1284']	 = 'أرشيف مونزينجر'
	,['1303']	 = 'آلات فنان'
	,['1308']	 = 'شاغل منصب'
	,['1346']	 = 'فائز'
	,['1365']	 = 'سبقه'
	,['1366']	 = 'تبعه'
	,['1389']	 = 'شهادة المنتج'
	-- ,['1409']	 = 'قالب أرشيف ركوب الدراجات يستخدم بيانات'
	,['1412']	 = 'لغة كاتب'
	,['1417']	 = 'معرف موسوعة بريتانيكا على الانترنت'
	,['1431']	 = 'منتج تنفيذي'
	,['1442']	 = 'صورة القبر'  --not yet
	,['1446']	 = 'مفقودين'
	,['1447']	 = 'قالب سبورتس رفرنس يستخدم بيانات'
	,['1451']	 = 'شعار نصي'
	,['1476']	 = 'عنوان'
	,['1546']	 = 'شعار وطني'
	--,['1562']	 = 'عنوان أول موفي'
	,['1581']	 = 'مدونة'
	,['1590']	 = 'خسائر'
	--,['1663']	 = 'قالب برو سايكلنج يستخدم بيانات'
	,['1712']	 = 'معرف ميتاكريتيك'
	,['1741']	 = 'معرف المكنز العام للأرشيف السمعي البصري'
	,['1798']	 = 'رمز أيزو 639-5'
	,['1819']	 = 'معرف شخص في جينالوجيكش.كوم'
	,['1971']	 = 'عدد الابناء'
	--,['1972']	 = 'معرف أوبن هب يستخدم بيانات'
	,['2019']	 = 'قالب اسم أول موفي يستخدم بيانات'
	,['2043']	 = 'طول'
	,['2046']	 = 'مساحة'
	,['2047']	 = 'مدة'
	,['2049']	 = 'عرض'
	,['2067']	 = 'وزن'
	,['2073']	 = 'مدى'
	,['2090']	 = 'قالب باور اوف تن يستخدم بيانات'
	,['2097']	 = 'مدة ولاية'
	,['2096']	 = 'وصف صورة'
	,['2101']	 = 'نقطة الانصهار'
	,['2130']	 = 'ميزانية'
	,['2250']	 = 'متوسط العمر'
	,['2284']	 = 'سعر الصرف'
	--,['2334']	 = 'معرف قاعدة بيانات الأفلام السويدية'
	,['2386']	 = 'قطر'
	,['2522']	 = 'فوز شخص'
	,['2534']	 = 'صيغة'
	,['2638']	 = 'معرف تي في دوت كوم'
	,['2656']	 = 'تصنيف الفيفا'
	,['2716']	 = 'صورة مجمعة'--not yet 
	,['2910']	 = 'ايقونة'--not yet 
	,['3017']	 = 'معرف فنان في رولينغ ستون'
	--,['3065']	 = 'معرف شخص في تيرنر كلاسيك موفيز'
	,['3069']	 = 'رمز وثيقة الأمم المتحدة'
	--,['3136']	 = 'معرف السينما.كوم للأشخاص'
	--,['3143']	 = 'معرف فيلم في موقع الفيلم'
	--,['3144']	 = 'معرف شخص في موقع الفيلم'
	,['3383']	 = 'ملصق فيلم'
	-- ,[' ']	 = ' '
	-- ,[' ']	 = ' '
	-- ,[' ']	 = ' '
	}

function list(s)
	local I = trim(s)
	return xt(s)
	--local key = categorieskey[I]
	--if key and key ~= "" then
		--mw.log("Module:Wikidata/تتبع: key: " .. key)
		--return wd(key)
	--else 
	--	return xt(s)
--	end
end

function p.pageId(frame)
	return mw.wikibase.getEntityIdForCurrentPage()
end

function p.makecategory1(options)  --Main function
	prop = options['property']
	prop2 = options['justthisqual']
	noicon = options['noicon'] -- options to hide the icon.
	nocate = options['nocate']  -- options to hide the category.
	q = options['category']
	iid = options['entityId'] or options['id']
	icon2 = options['icon2']
	if iid == '' or not iid then
             id = p.pageId()
             else id = iid 
      end
	if prop  == '' or not prop then
		return nil -- don't do anything if no options property.
	end
	propertyid = mw.ustring.gsub(prop:upper(), " ", "")

	icon = icons(propertyid,id,noicon,icon2)   -- function to display the icon.
	cate = category(propertyid,q,nocate) -- function to display the category.
	if prop2 and prop2 ~= "" then 
		cate = cate .. category( mw.ustring.gsub(prop2:upper(), " ", "") , q , nocate) 
	end
	last = cate ..''.. icon
	page_title_object = mw.title.getCurrentTitle();	
	title = page_title_object.text;	
	--mw.log("Module:Wikidata/تتبع:" .. title)
	if title == "ويكي بيانات/ملعب ويكي بيانات" then
		last = icon
	end	
	return last
end

function p.makecategory(frame)  --Main function
	local final = p.makecategory1(frame.args)
	return final
end

function p.make1(prop,id)  --Main function
	if id == '' or not id then
             id = p.pageId()
             else id = iid 
      end
	if prop  == '' or not prop then
		return nil -- don't do anything if no args property.
	end
	propertyid = mw.ustring.gsub(prop:upper(), " ", "")

	icon = icons(propertyid,id,noicon)   -- function to display the icon.
	cate = category(propertyid,q,nocate) -- function to display the category.
	
	last = cate ..''.. icon
		return last
end


function p.SS(frame) --testing function
	s = mw.ustring.gsub(frame.args['property']:upper(), " ", "")
	s = list(s)
	s = mw.text.trim(s)
	if s  == '' or not s then
		return  nil
	end
	q = frame.args['category']
	if q  == '' or not q then
		return category(s)
        else return q
	end
	
end

return p