وحدة:ResolveEntityId
صُنفت هذه الوحدة على أنها في مرحلة بيتا. عندما تصل الوحدة لهذه المرحلة، يمكن أن يوسع استخدامها في الصفحات الأخرى. لكن يجب توخي الحذر من أن الوحدات في هذه المرحلة ما زالت حديثة العهد لذلك وجب توخي الحذر عند الاستخدام وملاحظة أي أخطاء تنتج عنها. من العرف أن المجتمع سوف يوصل الوحدات في هذه المرحلة للتي بعدها عبر صفحات النقاش الخاصة بالوحدة أو أي مكان يعلن عن هذه الوحدة عبر ملاحظة أن هذه الوحدة تعمل بشكل صحيح والجميع راضٍ عن أدائها. |
الاستخدام
عدلوظائف مماثلة لـ mw.wikibase.resolvePropertyId، لكن تستخدم لعناصر/كيانات ويكي بيانات بدلًا من الخواص.
عبر الوحدات (_id)
عدلالاستدعاءات النموذجية للوحدات:
الكود | النتيجة | ملاحظة |
---|---|---|
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('Q42')
|
id = Q42
|
"Q42" هو معرف Wikidata صحيح ويتم إرجاعه كما هو. |
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('Q0')
|
id = nil
|
لا يعتبر "Q0" معرف Wikidata صحيح |
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('Q404')
|
id = Q404
|
يعتبر عنصر "Q404" تحويلة في ويكي بيانات إلى عنصر Q395 |
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('Q2147483647')
|
id = nil
|
عنصر Q2147483647 غير موجود في ويكي بيانات بعد |
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('دوغلاس آدمز')
|
id = Q42
|
مقالة دوغلاس آدمز موجوده ولها معرف ويكي بيانات "Q42" |
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('ThisIsNotARealWikidataItem')
|
id = nil
|
"ThisIsNotARealWikidataItem" is not a valid Wikidata ID, and no Wikipedia article exists at ThisIsNotARealWikidataItem, so nil is returned
|
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('ThisIsNotARealWikidataItem', 'Wikidata ID not found!')
|
id = 'Wikidata ID not found!'
|
Same as above, but the custom error message Wikidata ID not found! is returned
|
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('Douglas adams')
|
id = nil
|
"Douglas adams" is not a valid Wikidata ID, and while دوغلاس آدمز (with a lower-case "a") exists, it is a redirect to دوغلاس آدمز. Therefore the Wikidata ID for the latter page is returned |
local resolveEntityId = require( "Module:ResolveEntityId" )._id
id = resolveEntityId('Wikipedia:Village pump (technical)/Archive 1')
|
id = nil
|
"Wikipedia:Village pump (technical)/Archive 1" is not a valid Wikidata ID, and while ويكيبيديا:Village pump (technical)/Archive 1 exists, it does not have a Wikidata ID, so nil is returned
|
من خلال القوالب (entityid)
عدل- تنتج الوحدة معرف الكيان (أو لا تنتج شيء إذا لم يكن المعرف موجودًا):
{{#invoke:ResolveEntityId|entityid|id}}
- مثال:
{{#invoke:ResolveEntityId|entityid|دوغلاس آدمز}}
← Q42{{#invoke:ResolveEntityId|entityid|Douglas Adams}}
← Q42
- يمكن استخدام نص بديل في حالة عدم وجود قيمة:
{{#invoke:ResolveEntityId|entityid|id|نص بديل في حالة عدم وجود قيمة}}
- مثال:
{{#invoke:ResolveEntityId|entityid|مقالة غير موجودة|نص بديل للنتيجة}}
← نص بديل للنتيجة
local p = {}
function p._id(idOrTitle, alt)
local function checkId(id)
if id and mw.wikibase.entityExists(id) then
local sitelink = mw.wikibase.getSitelink(id)
if sitelink then
return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(id).id
end
return mw.wikibase.getEntity(id).id
else
return alt
end
end
if type(idOrTitle) == 'string' then
idOrTitle = mw.ustring.upper(mw.ustring.sub(idOrTitle, 1, 1)) .. mw.ustring.sub(idOrTitle, 2)
if mw.wikibase.isValidEntityId(idOrTitle) then
-- idOrTitle is in the proper format for a Wikidata entity ID
return checkId(idOrTitle)
else
local eid = mw.wikibase.getEntityIdForTitle(idOrTitle)
if eid then
-- idOrTitle is a title that matches a Wikidata entity
local instanceOf = mw.wikibase.getBestStatements(eid, 'P31')[1] --instance of
if not instanceOf or instanceOf.mainsnak.datavalue.value.id ~= 'Q4167410' then
-- instance-of value is missing or is not "disambiguation"
return checkId(eid)
end
else
-- idOrTitle is a title, but no wikidata item exists for that title
local page = mw.title.new(idOrTitle)
if page then -- valid title
local rtarget = page.redirectTarget
if rtarget then -- title is a Wikipedia redirect
return p._id(rtarget.fullText, alt)
end
end
end
end
end
return alt
end
function p.entityid(frame)
return p._id(frame.args[1], frame.args[2])
end
return p