وحدة:Cite/ملعب
الوحدة المسؤولة عن إظهار مراجع خواص ويكي بيانات. تستخدم أساساً بواسطة وحدة:wikidata2. الوظائفciteأمثلة للاستخدام خارج نطاق وحدة:wikidata2:
reflist
local p = {}
if nil ~= string.find(mw.getCurrentFrame():getTitle(), "ملعب", 1, true) then -- did the {{#invoke:}} use sandbox version?
wikidata = require("وحدة:Wikidata2/ملعب").formatStatementsFromLua
else -- otherwise
wikidata = require("وحدة:Wikidata2").formatStatementsFromLua
end
local quall = require("Module:Cite/quall")
local functions = require("Module:Cite/functions")
local Options = {}
local function getentityprop(entity, p, pattern)
-- get automatically url
local addTracking = ""
local Pattern = pattern or "autourl4" --autourl3
if p == "P345" then
Pattern = ""
addTracking = ""
end
local tot = wikidata({ textformat = "text", property = p, pattern = Pattern, numval = 5, noref = "true", conjunction = " & ", enlabelcate = "true", addTrackingCat = addTracking, noicon = "t", raw2 = Options.raw or ""})
if not tot or tot == "" then
tot = wikidata({ textformat = "text", entityId = entity, property = p, pattern = Pattern, noref = "true", conjunction = " & ", enlabelcate = "true", addTrackingCat = addTracking, noicon = "t", raw2 = Options.raw or "", numval = 5})
end
local tot2 = ""
if p == "P345" then
tot2 = functions.make_P345_link_o(tot)
end
if tot2 and tot2 ~= "" then
tot = "[" .. tot2 .. " " .. tot2 .. "]"
end
if tot and tot ~= "" then
tot = "وصلة : " .. tot
end
return tot
end
--[[
يجلب خواص معينة عند وجود مراجع محددة مسبقاً
--]]
local function getsomequall(entity, snak, property)
if
snak[property] and snak[property][1] and snak[property][1].datavalue and
snak[property][1].datavalue.value["numeric-id"]
then
id = snak[property][1].datavalue.value["numeric-id"]
local l10n = quall[id]
if l10n then
local q = {}
for _, v in pairs(l10n) do
mw.log("Module:Cite finding " .. v[1] .. ", id:" .. id .. ",3:" .. (v[3] or ""))
b = getentityprop(entity, v[1], v[3])
if b and b ~= "" then
table.insert(q, b)
mw.log("Module:Cite b " .. b)
end
end
t = table.concat(q)
if t and t ~= "" then
return t
end
end
end
end
local function ValueFromItem(items, property, firstvalue)
local pattern = "autourl"
if property == "P212" or property == "P957" then
pattern = nil
end -- no automatic link for ISBN
for i, item in pairs(items) do
ednumber = wikidata({ textformat = "text", entityId = item, property = property, firstvalue = firstvalue, pattern = pattern, noref = "true", modifytime = "longdate", enlabelcate = "true", numval = 5})
end
return ednumber
end
local function ValueFromEntityId(entity, property, firstvalue)
local pattern = "autourl"
val = wikidata({ textformat = "text", entityId = entity, property = property, firstvalue = firstvalue, pattern = pattern, noref = "true", modifytime = "longdate", enlabelcate = "true", numval = 5})
if val then
return val
end
end
--local function GetValueFromEntityId(snak,entity, property, firstvalue)
local function GetValueFromEntityId(snak, property, firstvalue)
--local A = wikidata({ textformat = "text",property = "P1629", entityId=property,enlabelcate="true", firstvalue="true", noref="true", label = functions.get_property_label( property )})
local A = functions.get_property_label(property)
local Pattern = "autourl"
if property == "P345" then
Pattern = ""
end
local prop = wikidata({ textformat = "text", property = property, firstvalue = firstvalue, noref = "true", pattern = Pattern, modifytime = "longdate", numval = 5}, snak)
--mw.log("prop" .. prop )
if property == "P345" then
url = functions.make_P345_link_o(prop)
if url and url ~= "" then
prop = "[" .. url .. " " .. url .. "]"
end
end
--mw.log('Module:Cite property:"' .. property .. '"' )
--mw.log('Module:Cite prop:"' .. prop .. '"' )
--if not prop then prop = ValueFromEntityId(entity, property,firstvalue) end
if prop and prop ~= "" then
if A and A ~= "" then
return A .. ": " .. prop
else
return prop
end
end
end
local function GetValueFromItem(items, snak, property, text, firstvalue)
if property == "P50" then
for i, item in pairs(items) do
if item == "Q36578" then
return ""
end
end
end
local pattern = "autourl"
if property == "P212" or property == "P957" then
pattern = nil
end -- no automatic link for ISBN
local prop = wikidata({ textformat = "text", property = property, firstvalue = firstvalue, pattern = pattern, numval = 5, noref = "true", modifytime = "longdate", enlabelcate = "true"}, snak)
if not prop then
prop = ValueFromItem(items, property, firstvalue)
end
if prop and prop ~= "" then
if text and text ~= "" then
prop = text .. ": " .. prop
end
end
return prop
end
local function get_number_from_item(items, property)
for i, item in pairs(items) do
ednumber = wikidata({ textformat = "text", entityId = item, property = property, firstvalue = "yes", enlabelcate = "true", numval = 5})
if ednumber then
return ednumber
end
end
end
local function getnumber(items, snak, property, text)
local tex = functions.get_property_label(property)
local number = wikidata({ textformat = "text", property = property, firstvalue = "true", enlabelcate = "true", numval = 5}, snak)
if not number then
number = get_number_from_item(items, property)
end
if not text then
text = tex
else
end
if number and number ~= "" then
if text then
return text .. ": " .. number
else
return number
end
end
end
local function GetItemValue(items, snak, property, text, firstvalue)
local pattern = "autourl"
-- if property =="P212" or property =="P957" then pattern = nil end -- no automatic link for ISBN
local prop = wikidata({ textformat = "text", property = property, firstvalue = (firstvalue or ""), pattern = pattern, noref = "true", modifytime = "longdate", separator = "، و", conjunction = "، و", numval = 5 }, snak)
if not prop then
prop = ValueFromItem(items, property, (firstvalue or ""))
end
if prop and prop ~= "" then
if text and text ~= "" then
prop = text .. ": " .. prop
end
end
return prop
end
local function GetNumberFromItem(items, snak, property, text, firstvalue)
local prop = wikidata({ textformat = "text", property = property, firstvalue = "t", numval = 5}, snak)
for i, item in pairs(items) do
ednumber = wikidata({ textformat = "text", entityId = item, property = property, firstvalue = "true", noref = "true", numval = 5}
)
end
if not prop then
prop = ednumber
end
if prop and prop ~= "" then
if text and text ~= "" then
prop = text .. prop
end
end
return prop
end
--[[
جلب أي وصلة مرجع من الخواص مثل
P1065,P854
--]]
local function getLink(items, snak, property, text)
-- local tex = functions.labeel(property,text)
local links = wikidata({ textformat = "text", property = property, pattern = "true", noref = "true", firstvalue = "true", numval = 5}, snak)
if links and links ~= "" then
if text and text ~= "" then
return functions.geturl(links, text)
else
return links
end
end
end
local function get_Link_from_item(items, snak, property, text)
local links = ValueFromItem(items, property, "true")
local tex = functions.labeel(property, text)
if links and links ~= "" then
if tex and tex ~= "" then
return tex .. ": " .. links
else
return links
end
end
end
--[[
جلب أي تاريخ من الخواص مثل
P813,P577
--]]
local function getdate(snak, property, text)
-- local tex = functions.labeel(property,text)
if snak[property] then
local dat = wikidata({ textformat = "text", property = property, pattern = "true", noref = "true", modifytime = "longdate", numval = 5 }, snak)
if dat and dat ~= "" then
if text and text ~= "" then
return text .. ": " .. dat
else
return dat
end
end
end
end
local function getdate1(items, snak, property, text)
for i, item in pairs(items) do
local datetime1 = wikidata({ textformat = "text", entityId = item, property = property, noref = "true", enlabelcate = "true", modifytime = "longdate", numval = 5})
end
if text then
return text .. ": " .. datetime1
else
return datetime1
end
end
local function getedition(items, snak)
for i, item in pairs(items) do
if item == "Q36578" then
return ""
end
end
local ordning = {
"الأول",
"الثاني",
"الثالث",
"الرابع",
"الخامس",
"السادس",
"السابع",
"الثامن",
"التاسع",
"العاشر",
"الحادي عشر",
"الثاني عشر"
}
local ednumber
if snak["P393"] then
ednumber = wikidata({ textformat = "text", property = "P393", firstvalue = "true", enlabelcate = "true", numval = 5}, snak)
else
ednumber = get_number_from_item(items, "P393")
end
if not ednumber then
return nil
end
if not tonumber(ednumber) then
return " الاصدار " .. ednumber
end
if ordning[tonumber(ednumber)] then
return " الاصدار " .. ordning[tonumber(ednumber)]
end
local sist = string.sub(ednumber, string.len(ednumber))
if sist == "1" or sist == "2" then
return " : الاصدار " .. ednumber
else
return " : الاصدار " .. ednumber
end
end
local function getsubtitle(items, snak) -- needs i18n some languages do not use this format
local s = {}
if snak["P1680"] then
dd = wikidata({textformat = "text", property = "P1680", firstvalue = "true", enlabelcate = "true", numval = 5}, snak)
table.insert(s,dd)
else
for i, item in pairs(items) do
local lab = wikidata({ textformat = "text", property = "P1680", enlabelcate = "true", entityId = item, firstvalue = "true", noref = "true", numval = 5})
local sitelink = mw.wikibase.sitelink(item)
if sitelink and lab then
table.insert(s, "[[:" .. sitelink .. "|" .. lab .. "]]")
elseif sitelink then
table.insert(s, "[[:" .. sitelink .. "]]")
elseif lab then
table.insert(s, lab)
end
end
end
tot = table.concat(s, " — ")
if tot and tot ~= "" then
return tot
else
return nil
end
end
local function gettitle(items, snak)
local link = getLink(items, snak, "P854") or getLink(items, snak, "P1065", "") -- the title will be with the link
local title = GetItemValue(items, snak, "P1476", "العنوان ", " ")
local subtitle = GetItemValue(items, snak, "P1680", "العنوان ", " ")
if not title or title == "" then
title = subtitle
end
if link and link ~= "" then
return ""
else
return title
end
end
local function getwhatever(snak, property)
if snak[property] then
--mw.log("Module:Cite getwhatever property " .. property)
local a = functions.get_property_label(property)
--local a = wikidata({ textformat = "text",property = "P1629", entityId=property, firstvalue="true", noref="true", enlabelcate="true", label = functions.get_property_label(property)})
local s = {}
--local items = {}
--mw.log("Module:Cite find snak.property " .. property)
for j, prop in pairs(snak[property]) do
if prop.snaktype == "value" then
item = "Q" .. prop.datavalue.value["numeric-id"]
--table.insert(items, item)
faso = wikidata({ textformat = "text", entityId = item, property = property, noref = "true", conjunction = ", ", enlabelcate = "true", numval = 5})
table.insert(s, faso)
end
end
if property == "P143" then
a = "مستورد من "
end
if property == "P248" then
a = "'''مذكور في'''"
end
--table.insert(s, wikidata({textformat = "text",property=property, conjunction=', ', enlabelcate="true"}, snak))
if #s > 0 then
return (a or "") .. "''':''' " .. table.concat(s, ", ")
end
end
end
--local function gettherest(snak, entity)
local function gettherest(snak)
local s = {}
for property, j in pairs(snak) do
Known = false
for k, l in pairs(functions.Known_properties) do
if property == l then
Known = true
end
end
if not Known then
local entity1 = mw.wikibase.getEntityObject(property)
if entity1.claims and (entity1.datatype == "string" or entity1.datatype == "external-id") then
--local vaa = GetValueFromEntityId(snak, entity, property, "true" )
local vaa = GetValueFromEntityId(snak, property, "true")
--mw.log("Module:Cite gettherest property:" .. property )
table.insert(s, vaa)
end
end
end
if #s > 0 then
return table.concat(s, " — ")
end
end
function numbers(items, snak)
local section = GetNumberFromItem(items, snak, "P958", "الباب: ")
local volume = GetNumberFromItem(items, snak, "P478", "المجلد: ")
local page = GetNumberFromItem(items, snak, "P304", "الصفحة: ")
local issue = GetNumberFromItem(items, snak, "P433", "العدد: ")
field = {}
if section and section ~= "" then
table.insert(field, section)
end
if volume and volume ~= "" then
table.insert(field, volume)
end
if page and page ~= "" then
table.insert(field, page)
end
if issue and issue ~= "" then
table.insert(field, issue)
end
return table.concat(field, " — ")
end
local function getISBN(items, snak)
local ISBN13 = GetNumberFromItem(items, snak, "P212", "ISBN ", "yes") --ISBN 13
local ISBN10 = GetNumberFromItem(items, snak, "P957", "ISBN ", "yes") --ISBN 10
if not ISBN13 or ISBN13 == "" then
ISBN13 = ISBN10
end
return ISBN13
end
function doipmid(items, snak)
local doi = GetValueFromItem(items, snak, "P356")
-- Digital Object Identifier
local pmid = GetValueFromItem(items, snak, "P698")
-- Identifier for journal
local pmc = GetValueFromItem(items, snak, "P932")
-- identifier issued by PubMed Central
field = {}
if doi and doi ~= "" then
table.insert(field, doi)
end
if pmid and pmid ~= "" then
table.insert(field, pmid)
end
if pmc and pmc ~= "" then
table.insert(field, pmc)
end
return table.concat(field, " — ")
end
local function Getquall(snak, entity)
local quall = getsomequall(entity, snak, "P143")
local quall1 = getsomequall(entity, snak, "P248")
if not quall or quall == "" then
quall = quall1
end
return quall
end
function getMultiLink(items, snak, entity)
local title = GetItemValue(items, snak, "P1476", "", "")
local link = getLink(items, snak, "P854", title)
--,"وصلة مرجع"
local link1 = get_Link_from_item(items, snak, "P854") --
--local therest = gettherest(snak, entity)
local therest = gettherest(snak)
local quall = Getquall(snak, entity)
local fulltext = get_Link_from_item(items, snak, "P953") --
local accessdate = getdate(snak, "P813", "تاريخ الاطلاع")
local archive = getLink(items, snak, "P1065", "")
field = {}
if link and link ~= "" then
newtab = link --We don't need to search for some links if they here already
elseif therest and therest ~= "" then
newtab = therest
elseif quall and quall ~= "" then
newtab = quall
elseif link1 and link1 ~= "" then
newtab = link1 -- last thing we want to see
elseif fulltext and fulltext ~= "" then
newtab = fulltext
end
if link and link ~= "" then
if archive and archive ~= "" then
archiveandlink = "t"
end
end
if newtab and newtab ~= "" then
table.insert(field, newtab)
if accessdate and accessdate ~= "" then
table.insert(field, accessdate)
end
end
if archiveandlink and archiveandlink ~= "" then
return ""
else
return table.concat(field, " — ")
end
end
function getarchiveLink(items, snak, entity)
local title = GetItemValue(items, snak, "P1476", "", "")
local link = getLink(items, snak, "P854", "")
local archive = getLink(items, snak, "P1065", "")
local archive1 = getLink(items, snak, "P1065", "وصلة ارشيفية")
local archivedate = getdate(snak, "P2960", "")
-- تاريخ الأرشفة
local accessdate = getdate(snak, "P813", "تاريخ الاطلاع")
local aa = functions.geturl((archive or link), title)
field = {}
if archive and archive ~= "" then
if aa and aa ~= "" then
table.insert(field, aa)
end
if link and link ~= "" then
org = functions.geturl(link, "الأصل")
if accessdate and accessdate ~= "" then
table.insert(field, accessdate)
end
end
a = " مؤرشف من " .. (org or "الأصل")
if archivedate and archivedate ~= "" then
a = a .. " في " .. archivedate
end
table.insert(field, a)
end
return table.concat(field, " — ")
end
function getreftable(items, snak, hash, options)
local entity = options.entityId
local rows = {
GetValueFromItem(items, snak, "P50", "المؤلف"), --author
GetValueFromItem(items, snak, "P98", "المحرر"), --editor
gettitle(items, snak), --title
GetValueFromItem(items, snak, "P123", "الناشر"), --publisher
GetValueFromItem(items, snak, "P170", "المخترع"), --creator
GetValueFromItem(items, snak, "P1433", "نشر في"), --publishedin
getdate(snak, "P577", "تاريخ النشر"), --publishdate
getedition(items, snak), --edition
numbers(items, snak), --number
doipmid(items, snak), --doipmid
getISBN(items, snak), --isbn
(getwhatever(snak, "P143") or getwhatever(snak, "P248")), --import
getMultiLink(items, snak, entity), --MultiLink
getarchiveLink(items, snak, entity), --archiveLink
GetItemValue(items, snak, "P1683", "إقتباس", " ") --quote
}
local field = {}
for _, line in pairs(rows) do
if line and line ~= "" then
table.insert(field, line)
end
end
local license = GetItemValue(items, snak, "P275", "الرخصة")
if license and license ~= "" and #field > 0 then
table.insert(field, license)
end
local doo = table.concat(field, " — ")
if doo and doo ~= "" then
return doo --mw.getCurrentFrame():extensionTag( "ref", doo, {name = hash} )
end
end
local function findblacklist(items)
-- function to ignore Sister projects
local val = "false"
local s = {}
for i, item in pairs(items) do
function qoo(item, property)
return wikidata({textformat = "text", entityId = item, property = property, noref = "true", firstvalue = "1", formatting = "raw", numval = 5})
end
local wiki = qoo(item, "P1800") or qoo(item, "P1566") or qoo(item, "P21") -- all wikimedia site, GeoNames ,gender
local wik2 = qoo(item, "P31")
local blackk = {
"Q20651139",
"Q465",
"Q15241312",
"Q30069253", -- ظهور مشكلة غير معروفة السبب في كريستوفر_تولكين [[موضوع:Veus9rhajrejwaho]]
"Q52" -- Wikipedia
}
for k, b in pairs(blackk) do
if item == b then
val = "true"
end
end
if wiki and wiki ~= "" then
val = "true"
elseif
wik2 == "Q5" or -- Human is not a direct reference
wik2 == "Q184188" or -- Also Canton
wik2 == "Q1250464"
then
val = "true" -- Also places
end
end
return val
end
local ref_cash = {}
function p.citeitem(items, snak, hash, options, notag)
Options = options
if hash and hash ~= "" and ref_cash[hash] then
--mw.log("Module:Cite ref_cash[hash] = " .. hash)
return ref_cash[hash]
end
if not items and not snak then
return nil
end
if type(items) == "string" then
items = {items}
end
items = {}
if snak.P248 then
for j, prop in pairs(snak.P248) do
if prop.snaktype == "value" then
table.insert(items, "Q" .. prop.datavalue.value["numeric-id"])
end
end
elseif snak.P143 then
for j, prop in pairs(snak.P143) do
if prop.snaktype == "value" then
table.insert(items, "Q" .. prop.datavalue.value["numeric-id"])
end
end
end
local blacklist1 = findblacklist(items)
if blacklist1 == "true" then
return nil
end
--local findtype = FindTypeOfRefrence(items, snak, options)
local refrence = getreftable(items, snak, hash, options)
if refrence and refrence ~= "" then
if notag and notag ~= "" then
refrence = refrence
else
refrence = mw.getCurrentFrame():extensionTag("ref", refrence, {name = hash})
end
end
if hash and hash ~= "" then
ref_cash[hash] = refrence
end
return refrence
end
function p.citeitem2(ref, options, notag)
Options = options
if not ref then
return nil
end
local hash = ref.hash
local snak = ref.snaks
local snnaks = ""
if hash and hash ~= "" and ref_cash[hash] then
--mw.log("Module:Cite ref_cash[hash] = " .. hash)
return ref_cash[hash]
end
for Px, prope in pairs(snak) do
snnaks = snnaks .. "," .. Px
end
--mw.log( "Module:Cite Citeitem2 hash: " .. hash )
--mw.log( "Module:Cite *snnaks : " .. snnaks )
items = {}
if snak.P248 then
for j, prop in pairs(snak.P248) do
if prop.snaktype == "value" then
table.insert(items, "Q" .. prop.datavalue.value["numeric-id"])
end
end
elseif snak.P143 then
for j, prop in pairs(snak.P143) do
if prop.snaktype == "value" then
table.insert(items, "Q" .. prop.datavalue.value["numeric-id"])
end
end
end
local blacklist1 = findblacklist(items)
if blacklist1 == "true" then
return nil
end
--local findtype = FindTypeOfRefrence(items, snak, options)
local refrence = getreftable(items, snak, hash, options)
if refrence and refrence ~= "" then
if notag and notag ~= "" then
refrence = refrence
else
refrence = mw.getCurrentFrame():extensionTag("ref", refrence, {name = hash})
end
end
if hash and hash ~= "" then
ref_cash[hash] = refrence
end
return refrence
end
function p.reflist(frame)
local list = mw.text.split(frame.args.item, " ")
local s = {}
for i, j in pairs(list) do
local item = mw.wikibase.getEntityObject(mw.text.trim(j))
local str = p.citeitem({mw.text.trim(j)}, item.claims, mw.text.trim(j) .. i, frame.args, "t")
if str then
table.insert(s, "*" .. str)
end
end
return table.concat(s, "\n")
end
function p.cite(frame)
local item = mw.wikibase.getEntityObject(frame.args.item)
if not item then
return "no item"
end
return p.citeitem({frame.args.item}, item.claims, frame.args.item, frame.args, "t")
end
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia