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

local p = {}
function ifd ( fii , opt )
	if opt and opt ~= '' then
			if opt == 'club' then
					if fii == 'Q476028' then  return fii end
			elseif opt == 'team' then
					if fii == 'Q6979593' or fii == 'Q23895910'  or fii == 'Q23847779'
					then  return fii end
			else return fii 
			end
	end 
--	return dd
end
function p.foot( claims2 , options)
   	local formattedStatements = {}
   	local statementsraw = {}
   	local claims = claims2
	if (options.sortingproperty and options.sortingproperty ~= "") and options.sortbynumber == 'chronological' or options.sortbynumber == 'inverted' then
			claims = sortbyqualifiernumber(claims2, options)
	end
	if claims then
		for i, statement in pairs( claims ) do
			options.num = i
			local va = formatOneStatement( statement, nil , options )
			if va.v then
				table.insert( formattedStatements, va.v )
			end
			table.insert( statementsraw, va.raw )
		end
	end
	local tot = mw.text.listToText( formattedStatements, options.separator, options.conjunction )
	if tot == '' then tot = nil end
	if options.raw and options.raw ~= '' then
		return statementsraw
	end
	if options.numberofclaims and options.numberofclaims ~= '' then
		return #formattedStatements
	end
	return tot
end

function p.football( statement , options) -- used by قالب:معلومات صاحب منصب/منصب ويكي بيانات
		local value = statement.mainsnak.datavalue.value
   		local entit = getEntityIdFromValue( value )
    	local s = formatSnak( statement.mainsnak, options ).value
		--local s = formatEntityId( entit , options ).value
				local fii = formatStatements( {property ='P31', entityId = entit, noref ='true' ,rank='all'
				, firstvalue='true',separator='',conjunction='',formatting ='raw'})
		local fiind = ifd( fii , options.club )
      if fiind 	and fiind ~= '' then
		if s then
		        local entit = getEntityIdFromValue( value )
        		local caca = formatStatements( {property ='P17', entityId = entit
        			, noref ='true' ,rank='all'--,pattern =options.pattern
        			,size ='20',image ='image'
        			,propertyimage ='P41', firstvalue='true',separator='',conjunction=''})
        		
        		local asdf = formatEntityId( entit , options ).value
        			if asdf and asdf  ~= '' then
        		if caca and caca  ~= '' then  s =  caca .. ' '.. asdf   else  s = asdf   end
				end
		if statement.references then
			if options.reff and options.reff ~= ''  then
				reff  = formatReferences( statement, options )
				s = s..reff
			end 
		end
		if statement.qualifiers
			then
			if statement.qualifiers.P1350 or statement.qualifiers.P1351 or statement.qualifiers.P580 or statement.qualifiers.P582 then
					amatch = formatStatements({property = "P1350", firstvalue= 'true'}, statement.qualifiers) or ''
					goal = formatStatements({property = "P1351", firstvalue= 'true'}, statement.qualifiers) or ''
					start1 = formatStatements({property = "P580", firstvalue= 'true',modifytime = 'y'}, statement.qualifiers) or ' '
					finish1 = formatStatements({property = "P582", firstvalue= 'true',modifytime = 'y'}, statement.qualifiers) or ' '
			end
		end
		if options.football1 and options.football1 ~= '' then
					s =mw.getCurrentFrame():expandTemplate{ title = "صندوق معلومات سيرة كرة قدم/سطر فريق"
						, args ={(start1 or '') , (finish1 or '') , s, amatch , goal } }
				end
	
	end
	 return s 
end
end

function p.teams( statement , options)
		local value = statement.mainsnak.datavalue.value
   		local entit = getEntityIdFromValue( value )
    	local s = formatSnak( statement.mainsnak, options ).value
		if s then
		        local entit = getEntityIdFromValue( value )
        		local asdf = formatEntityId( entit , options ).value
        		 s = asdf 
		if statement.references then
			if options.reff and options.reff ~= ''  then
				reff  = formatReferences( statement, options )
				s = s..reff end 
		end
		if statement.qualifiers
			then
				function ww(p)
    				if p and p ~='' then return formatStatements({property =p, firstvalue= 'true'}, statement.qualifiers) end
				end
					Q1 = ww(options.Q1)
					Q2 = ww(options.Q2)
					Q3 =  ww(options.Q3)
					Q4 =  ww(options.Q4)
					Q5 =  ww(options.Q5)
					Q6 =  ww(options.Q6)
					Q7 =  ww(options.Q7)
					Q8 =  ww(options.Q8)
					Q9 =  ww(options.Q9)
					Q10 =  ww(options.Q10)
		end
		if options.template and options.template ~= '' then
				doo =mw.getCurrentFrame():expandTemplate{ title =options.template, args ={Q1,s,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10} }
				end
	end
	 return doo..'\n'
end

function p.awards( datavalue, datatype, options ) -- used by template:ص.م/سطر جوائز ويكي بيانات
	if datatype == 'wikibase-item'  
		then
	        	local value= datavalue.value
	        local image = formatStatements( {property ='P2425' , entityId = value.id
	        	, noref =options.noref , size ='30', image ='yes', noref='true' , firstvalue='true'})
	        local image2 = formatStatements( {property ='P154' , entityId = value.id
	        	, noref =options.noref , size ='30', image ='yes', noref='true' , firstvalue='true'})
		local categoryid = formatStatements( {property ='P2517', entityId = value.id, noref ='true'
				, firstvalue='true',separator='',conjunction='',formatting ='raw'})
		local categoryid2 = formatStatements( {property ='P910', entityId = value.id, noref ='true'
				, firstvalue='true',separator='',conjunction='',formatting ='raw'})

		if not image or image == '' then image =image2 end
		if not categoryid or categoryid == '' then categoryid = categoryid2 end

			local category = mw.wikibase.sitelink( categoryid )
	        local s = formatEntityId( value.id, options ).value
		   if s and s  ~= '' then
		   			if image and image ~= '' then
		   				s = image ..' ' .. s
	   				end
		       	if category and category  ~= '' 
		       		then 
							return  s.. ' [[' ..category ..']]'
	  			else 
	  				return s 
		       	end
		end
	else  return ''
	end
end

function p.office3( statement , options) -- used by قالب:معلومات صاحب منصب/منصب ويكي بيانات
		local value = statement.mainsnak.datavalue.value
   		local entit = getEntityIdFromValue( value )
    	local s = formatSnak( statement.mainsnak, options ).value

		if s then
		        local entit = getEntityIdFromValue( value )
        		local ca1 = formatStatements( {property ='P154', entityId = entit
        			, noref ='true' ,rank='all'	,size ='35',image ='image', firstvalue='true',separator='',conjunction=''})
        		local ca2 = formatStatements( {property ='P41', entityId = entit
        			, noref ='true' ,rank='all'	,size ='35',image ='image', firstvalue='true',separator='',conjunction=''})
        		if ca1 and ca1 ~= '' then  caca  =  ca1  else  caca  = ca2 end

        		local asdf = formatEntityId( entit , options ).value
        			if asdf and asdf  ~= '' then
        		if caca and caca  ~= '' then  s =  caca .. ' '.. asdf   else  s = asdf   end
				end
		if statement.references then
			if options.reff and options.reff ~= ''  then
				reff  = formatReferences( statement, options )
				s = s..reff
			end 
		end
		if statement.qualifiers
			then
				if statement.qualifiers.P580 or statement.qualifiers.P582 or statement.qualifiers.P1365 or statement.qualifiers.P1366 then
					start	=	formatStatements({property = "P580", firstvalue= 'true',modifytime = 'longdate'}, statement.qualifiers) or ' '
					finish	=	formatStatements({property = "P582", firstvalue= 'true',modifytime = 'longdate'}, statement.qualifiers) or ' '
					before	=	formatStatements({property = "P1365", firstvalue= 'true'}, statement.qualifiers) or ' '
					after	=	formatStatements({property = "P1366", firstvalue= 'true'}, statement.qualifiers) or ' '
					constituency	=	formatStatements({property = "P768"}, statement.qualifiers) or ' '
					series	=	formatStatements({property = "P1545", firstvalue= 'true'}, statement.qualifiers) or ' '
					electedin	=	formatStatements({property = "P2715"}, statement.qualifiers) or ' '
					P1001	=	formatStatements({property = "P1001"}, statement.qualifiers) or ' '
					P108	=	formatStatements({property = "P108"}, statement.qualifiers) or ' '
					P642 = formatStatements({property = "P642"}, statement.qualifiers) or ' '
					president = formatStatements({property = "P325"}, statement.qualifiers) or ' '
					premier= formatStatements({property = "P6"}, statement.qualifiers) or ' '

			end
		end
		if options.office2 and options.office2 ~= '' then
							s = mw.getCurrentFrame():expandTemplate{ title = "معلومات صاحب منصب/منصب ويكي بيانات/نواة"	, 
				args = {office = s
						, termstart = start
						, termend = finish
						, constituency = constituency
						, predecessor = before
						, successor = after
						, president= president
						, premier = premier
						, series= series
						, electedin=electedin
						, jurisdiction=P1001
						, employer=P108
						, of=P642
						, entityId=options.entityId}
					} 
				end
	
	end
	 return s 
end




function p.formatI( datavalue, datatype, options )
	local value= datavalue.value
	local image = '[[ملف:' .. value
		if options['border'] and options['border'] ~= '' then 	image = image .. '|border' end
	    if options['size'] and options['size'] ~= '' then image = image .. '|' .. options['size']  end
	    if options['alt'] and options['alt'] ~= '' then image = image .. '|' .. options['alt'] end
	image = image .. ']]'
    return image
end


function p.rree( datavalue, datatype, options )
	if datatype  == 'wikibase-item'  then
 --return   getEntityIdFromValue( datavalue.value )
    	local value= datavalue.value
 	return datavalue.value.id .. formatEntityId( datavalue.value.id, options ).value   	

 else  return 'datatype  isn\'t wikibase-item' 
	end
end

function p.rrrrrr( datavalue, datatype, options )
	if datatype  == 'wikibase-item'  then

	local label = labelIn('ar',datavalue.value.id)
	local link = mw.wikibase.sitelink( datavalue.value.id)

    if link and (not options.nolink or options.nolink == '') then
        if label and label ~= '' then
            return '[[:' .. link .. '|' .. formatcharacters(label, options) .. ']]' 
        else
            return '[[:' .. formatcharacters(link, options) .. ']]' 
        end
    else
    	if label and label ~= '' then
    		return formatcharacters(label, options) 
    	else return ''
end
    	return ''
    end
 else  return 'datatype  isn\'t wikibase-item' 
	end
end


function p.monolingualtext( datavalue, datatype, options )

	if datatype == 'monolingualtext' then
		
		if not options.langpref or options.langpref == '' then
			valu = mw.text.tag('span', {title = mw.language.fetchLanguageName(datavalue.value.language, 'ar')}, datavalue.value.text)
			lange = '('.. mw.language.fetchLanguageName(datavalue.value.language, 'ar')..')'

		else
			if options.langpref == datavalue.value.language then
				valu  = mw.text.tag('span', {title = mw.language.fetchLanguageName(datavalue.value.language, 'ar')}, datavalue.value.text)
				lange = '('.. mw.language.fetchLanguageName(datavalue.value.language, 'ar')..')'
			end
		end
		if options.showlang and options.showlang ~= '' 
		then return  valu  ..' '..lange
		else return valu
			end


    else
        return formatError( 'unknown-datatype' )
    end
 end
    
function p.rr( datavalue, datatype, options )
	if datatype  == 'wikibase-item'  then
 --return   getEntityIdFromValue( datavalue.value )
    	local value= datavalue.value
 	return datavalue.value.id .. formatEntityId( datavalue.value.id, options ).value   	

 else  return 'datatype  isn\'t wikibase-item' 
	end
end

function p.getpropertyfromvalue( datavalue ,datatype , options)

	if datatype == 'wikibase-item'  
		then
	
	        		local value= datavalue.value
	        		local caca = formatStatements( {
	        			 property =options.prop2 , entityId = value.id
	        			, noref =options.noref , rank=options.rank	
	        			, size =options.size	, image =options.image
	        			, noref='true' , firstvalue='true'
	        			, propertyimage =options.prop3
	        			}
	        		)
	        		local asdf = formatEntityId( value.id, options ).value
		    if asdf and asdf  ~= '' then
		        	if caca and caca  ~= '' 
		        		then 
								return  caca ..' '.. asdf
		    			else return asdf  
		        	end
			end

		else  return 'datatype  isn\'t wikibase-item' 
	end
end


function p.formatCommonsCategory( datavalue, datatype, options )
	   if datatype == 'commonsMedia'  then

    local link = 'commons:Category:' .. datavalue.value
    local title = datavalue.value
    if ( options['text'] and options['text'] ~= '' ) then
    	title = options['text']
    end

	commons = '[[' .. link .. '|' .. title .. ']]'

	--Commons icon
    if ( not options['icon'] or options['icon'] ~= '-' ) then
    	local icon_size = '15px'
    	if ( options['icon_size'] and options['icon_size'] ~= '' ) then
    		icon_size = options['icon_size']
    	end
    	commons = '[[ملف:Commons-logo.svg|' .. icon_size .. '|link=' .. link .. ']] ' .. commons
    end

	--Text before and after link
    if ( options['text_before'] and options['text_before'] ~= '' ) then
    	if ( options['text_before'] ~= '-' ) then
	    	commons = options['text_before'] .. ' ' .. commons
	    end
	else
    	commons = '\'\'\' ' .. commons
    end

    if ( options['text_after'] and options['text_after'] ~= '' ) then
    	if ( options['text_after'] ~= '-' ) then
	    	commons =  commons .. ' ' .. options['text_after']
	    end
	else
		commons =  commons .. ' \'\'\' على [[كومنز]]'
    end
	
    return commons
end
end

--[[
	this is like p.formatPlaceWithQualifiers in ru:Модуль:Wikidata/Places
]]
function p.PlacesWithLocatedIn( datavalue, datatype, options )
	if datatype == 'wikibase-item'  
		then
			function P131 (id,formatting,p)
				st = formatStatements( {property =p or 'P131' , entityId = id, noref ='t', firstvalue='true',formatting=formatting})
				--if id == st then st = nil end
				return st
			end
		local value= datavalue.value
		local v = formatEntityId( value.id, options ).value
		local P1 = P131(value.id,'') 
		local P1id = P131(value.id,'raw')	
		local P2 = P131(P1id,'') 
		local P2id = P131(P1id,'raw')	
		local P3 = P131(P2id,'') 
		local P3id = P131(P2id,'raw')
		local P4 = P131(P3id,'') 
		--table.insert(tt , v)
			function dd (s1 ,s2 ,s3 )
				if s1 and s1 ~= '' then
					if s2 and s2 ~= '' 
						then 
							return  s1 .. '، '..  s2
						else 
							if s1 == s3 
								then return s1 
								else return s1 .. '، '..  s3
							end
					end
				end
			end
		    if v and v  ~= '' 
		    	then
					val = dd(v,dd(P1
									,dd(
										P2,dd(P3
												,P4
												, P131(P3id,'','P17')
											)
										, P131(P2id,'','P17')
										)
								, P131(P1id,'','P17')
								) 
							, P131(value.id,'','P17')
							) 
			end
		return val
		else
			return 'datatype  isn\'t wikibase-item' 
	end
end

return p