الفرق بين المراجعتين ل"وحدة:Wikibase"
Jawad A Najar (نقاش | مساهمات) (أنشأ الصفحة ب'---------- Module:Wikibase ---------------- local p = {} function p.getEntityObject(id) if not mw.wikibase then return nil end entity = mw.wikibase.getEntityObject(id)...') |
Ahmad A Najar (نقاش | مساهمات) |
||
سطر 1: | سطر 1: | ||
− | |||
local p = {} | local p = {} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | -- | + | function p.wikidatacheck(frame) |
− | + | local pframe = frame:getParent() | |
− | if | + | local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself |
− | + | local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template | |
− | + | ||
− | return " | + | local property = config.property |
+ | local value = config.value or "" | ||
+ | local catbase = config.category | ||
+ | local namespaces = config.namespaces | ||
+ | local nocatsame = config.nocatsame or "" | ||
+ | local ok = false -- one-way flag to check if we're in a good namespace | ||
+ | local ns = mw.title.getCurrentTitle().namespace | ||
+ | for v in mw.text.gsplit( namespaces, ",", true) do | ||
+ | if tonumber(v) == ns then | ||
+ | ok = true | ||
+ | end | ||
+ | end | ||
+ | if not ok then -- not in one of the approved namespaces | ||
+ | return "" | ||
end | end | ||
− | + | local entity = mw.wikibase.getEntityObject() | |
− | + | if not entity then -- no Wikidata item | |
− | + | return "[[Category:" .. catbase .. " not in Wikidata]]" | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | + | if value == "" then | |
− | + | return nil -- Using Wikidata | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | if | ||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | + | local claims = entity.claims or {} | |
− | + | local hasProp = claims[property] | |
− | + | if not hasProp then -- no claim of that property | |
− | + | return "[[Category:" .. catbase .. " not in Wikidata]]" -- bad. Bot needs to add the property | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | + | for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values? | |
− | + | propValue = (v.mainsnak.datavalue or {}).value | |
− | + | if propValue == value then | |
− | -- | + | if nocatsame == "" then |
− | + | return "[[Category:" .. catbase .. " same as Wikidata]]" -- yay! | |
− | + | else | |
− | + | return nil -- if nocatsame, the "same as" category is not added | |
− | + | end | |
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
end | end | ||
+ | return "[[Category:" .. catbase .. " different from Wikidata]]" -- needs human review :( | ||
end | end | ||
return p | return p |
مراجعة 04:34، 5 أبريل 2021
هذه الوحدة تم نسخها من المثال من صفحة توثيق الوحدة في mw:Extension:Wikibase Client/Lua. ويجب أن تبقى متسقة مع تلك الصفحة.
الاستخدام
- معرف
{{#invoke: Wikibase | id }}
- تسمية
{{#invoke: Wikibase | label }}
{{#invoke: Wikibase | label | entity id (Q# or P#) }}
- وصف
{{#invoke: Wikibase | description }}
{{#invoke: Wikibase | description | entity id (Q# or P#) }}
- صفحة
{{#invoke: Wikibase | page }}
{{#invoke: Wikibase | page | item id (Q#) }}
- نوع البيانات
{{#invoke: Wikibase | datatype | property id (P#) }}
أمثلة
معرف
{{#invoke:Wikibase | id }}
ينتج ← خطأ: الوظيفة "id" غير موجودة.
تسمية
{{#invoke:Wikibase | label }}
ينتج ← خطأ: الوظيفة "label" غير موجودة.{{#invoke:Wikibase | label | Q132689 }}
ينتج ← خطأ: الوظيفة "label" غير موجودة.{{#invoke:Wikibase | label | P31 }}
ينتج ← خطأ: الوظيفة "label" غير موجودة.
وصف
{{#invoke:Wikibase | description }}
ينتج ← خطأ: الوظيفة "description" غير موجودة.{{#invoke:Wikibase | description | Q132689 }}
ينتج ← خطأ: الوظيفة "description" غير موجودة.{{#invoke:Wikibase | description | P31 }}
ينتج ← خطأ: الوظيفة "description" غير موجودة.
صفحة
{{#invoke:Wikibase | page }}
ينتج ← خطأ: الوظيفة "page" غير موجودة.{{#invoke:Wikibase | page | Q132689 }}
ينتج ← خطأ: الوظيفة "page" غير موجودة.
نوع البيانات
- طالع أيضًا: wikidata:Help:Data type
- طالع أيضًا: wikidata:Special:ListDatatypes
⧼datatypes-type-commonsMedia⧽: [[d:Property:P18|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P18)]]
{{#invoke:Wikibase | datatype | P18 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P18 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-globe-coordinate⧽: [[d:Property:P625|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P625)]]
{{#invoke:Wikibase | datatype | P625 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P625 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-wikibase-item⧽: [[d:Property:P6|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P6)]]
{{#invoke:Wikibase | datatype | P6 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P6 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-wikibase-property⧽: [[d:Property:P1647|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P1647)]]
{{#invoke:Wikibase | datatype | P1647 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P1647 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-string⧽: [[d:Property:P225|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P225)]]
{{#invoke:Wikibase | datatype | P225 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P225 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-monolingualtext⧽: [[d:Property:P1448|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P1448)]]
{{#invoke:Wikibase | datatype | P1448 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P1448 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-quantity⧽: [[d:Property:P1082|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P1082)]]
{{#invoke:Wikibase | datatype | P1082 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P1082 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-time⧽: [[d:Property:P569|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P569)]]
{{#invoke:Wikibase | datatype | P569 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P569 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-url⧽: [[d:Property:P856|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P856)]]
{{#invoke:Wikibase | datatype | P856 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P856 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-math⧽: [[d:Property:P2534|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P2534)]]
{{#invoke:Wikibase | datatype | P2534 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P2534 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
⧼datatypes-type-external-id⧽: [[d:Property:P212|
- عنصر قائمة منقطة
- تحويل قالب:تسمية
طالع عدد استخدامات القالب في المقالات (من هنا)
(P212)]]
{{#invoke:Wikibase | datatype | P212 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.{{#invoke:Wikibase | datatype | Property:P212 }}
ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
local p = {} function p.wikidatacheck(frame) local pframe = frame:getParent() local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template local property = config.property local value = config.value or "" local catbase = config.category local namespaces = config.namespaces local nocatsame = config.nocatsame or "" local ok = false -- one-way flag to check if we're in a good namespace local ns = mw.title.getCurrentTitle().namespace for v in mw.text.gsplit( namespaces, ",", true) do if tonumber(v) == ns then ok = true end end if not ok then -- not in one of the approved namespaces return "" end local entity = mw.wikibase.getEntityObject() if not entity then -- no Wikidata item return "[[Category:" .. catbase .. " not in Wikidata]]" end if value == "" then return nil -- Using Wikidata end local claims = entity.claims or {} local hasProp = claims[property] if not hasProp then -- no claim of that property return "[[Category:" .. catbase .. " not in Wikidata]]" -- bad. Bot needs to add the property end for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values? propValue = (v.mainsnak.datavalue or {}).value if propValue == value then if nocatsame == "" then return "[[Category:" .. catbase .. " same as Wikidata]]" -- yay! else return nil -- if nocatsame, the "same as" category is not added end end end return "[[Category:" .. catbase .. " different from Wikidata]]" -- needs human review :( end return p