אונטערשייד צווישן ווערסיעס פון "יחידה:PropertyLink"

אפדעיט
אין תקציר עריכה
(אפדעיט)
 
שורה 1: שורה 1:
local FEMALE_FORM_PROPERTY = 'P2521'
local FEMALE_FORM_PROPERTY = 'P2521'
local Date = require('Module:דאטום')
local Date = require('Module:דאטום')
local wikidataModule = require('Module:Wikidata')
local WDS = require('Module:WikidataSelectors')


--[[  
--[[  
שורה 7: שורה 9:
function asOfDateQualifier(claim)
function asOfDateQualifier(claim)
local AS_OF_PROPERTY = 'P585'
local AS_OF_PROPERTY = 'P585'
local wikidataModule = require('Module:Wikidata')
local value
local value
local error
local error
שורה 35: שורה 36:
local langElementId = 'Q9288' -- hebrew
local langElementId = 'Q9288' -- hebrew
local labelFilter = 'P5061[language:'..langCode..'], P5061[P282:' .. writingSystemElementId .. ', P407:' .. langElementId .. ']'
local labelFilter = 'P5061[language:'..langCode..'], P5061[P282:' .. writingSystemElementId .. ', P407:' .. langElementId .. ']'
local WDS = require( 'Module:WikidataSelectors' )
local labelClaims = WDS.filter( {['P5061']=unitSymbol }, labelFilter )
local labelClaims = WDS.filter( {['P5061']=unitSymbol }, labelFilter )
for r, claim in pairs( labelClaims ) do
for r, claim in pairs( labelClaims ) do
if claim.mainsnak and claim.mainsnak.datavalue.type == 'monolingualtext' and claim.mainsnak.datavalue.value.text then
if claim.mainsnak and claim.mainsnak.datavalue.type == 'monolingualtext' and claim.mainsnak.datavalue.value.text then
unit = claim.mainsnak.datavalue.value.text
unit = claim.mainsnak.datavalue.value.text
break;
break
elseif claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.type == 'string' and claim.mainsnak.datavalue.value ~= '' then
elseif claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.type == 'string' and claim.mainsnak.datavalue.value ~= '' then
unit = claim.mainsnak.datavalue.value
unit = claim.mainsnak.datavalue.value
break;
break
end
end
end
end
שורה 55: שורה 55:


function getPropertyQualifier(property, qualifier)
function getPropertyQualifier(property, qualifier)
local wikidataModule = require('Module:Wikidata')
local entity = mw.wikibase.getEntityIdForCurrentPage()
local entity = mw.wikibase.getEntityIdForCurrentPage()
     if not entity then return end --the entity doesnt exist or have no claims
     if not entity then return end --the entity doesnt exist or have no claims
שורה 66: שורה 65:


local function missingLabelCategory(propertyName)
local function missingLabelCategory(propertyName)
return '[[קאטעגאריע:ויקינתונים:ערכים_חסרי_תווית_בעברית: ' .. (mw.wikibase.label( propertyName) or propertyName) .. ']][[קאטעגאריע:ויקינתונים:ערכים_חסרי_תווית_בעברית]]'
return '[[קאַטעגאָריע:ויקינתונים:ערכים_חסרי_תווית_בעברית: ' .. (mw.wikibase.label( propertyName) or propertyName) .. ']][[קאַטעגאָריע:ויקינתונים:ערכים_חסרי_תווית_בעברית]]'
end
end


local function getFemaleLabelForEntityId( entityId )
local function getFemaleLabelForEntityId( entityId )
local WDS = require('Module:WikidataSelectors')
local femaleForm = mw.wikibase.getBestStatements(entityId, FEMALE_FORM_PROPERTY)
local femaleForm = mw.wikibase.getBestStatements(entityId, FEMALE_FORM_PROPERTY)
שורה 97: שורה 95:
@param {string} entityId - id of entity to link to (e.g Q42)
@param {string} entityId - id of entity to link to (e.g Q42)
@param {string} genderAwareEntity - entity from which to fetch gender for gender form
@param {string} genderAwareEntity - entity from which to fetch gender for gender form
@param {bool} noLinktoWikidata - if true, returns without the link to Wikidata
@returns {string, bool} formattedValue, missingTranslation - the formatted value along with indicator of missing translation
@returns {string, bool} formattedValue, missingTranslation - the formatted value along with indicator of missing translation
]]
]]
function formatEntity(entityId, genderAwareEntity)
function formatEntity(entityId, genderAwareEntity, noLinktoWikidata)
local linkTarget = mw.wikibase.sitelink( entityId )
local linkTarget = mw.wikibase.sitelink( entityId )
     local localLabel, langLabel, missingFemaleForm
     local localLabel, langLabel, missingFemaleForm
שורה 152: שורה 151:
     formattedValue = mw.ustring.format('<span lang="en" dir="ltr">%s</span>', localLabel)
     formattedValue = mw.ustring.format('<span lang="en" dir="ltr">%s</span>', localLabel)
     else
     else
formattedValue = mw.ustring.format( "[[:d:%s|%s]]", entityId, entityId )
    if noLinktoWikidata then
    formattedValue = 'בפסקה זו רשומה אחת נוספת שטרם תורגמה'
else
formattedValue = mw.ustring.format( "[[:d:%s|%s]]", entityId, entityId )
end
end
end
     end
     end
שורה 158: שורה 161:
end
end


function formatOptionalQualifiers(property, qualifiers, qualifiersSep)
function formatOptionalQualifiers(property, qualifiers, qualifiersSep, defaultValue, addParenthesis)
if (qualifiers==nil) or (#qualifiers == 0) or (not property.qualifiers) then return '' end
if (qualifiers==nil) or (#qualifiers == 0) or (not property.qualifiers) then return '' end
qualifiersSep = qualifiersSep or ', '
qualifiersSep = qualifiersSep or ', '
שורה 164: שורה 167:
local formmatedQualifiers = {}
local formmatedQualifiers = {}
local warnings = ''
local warnings = ''
local defaultIsOn = true
for _, optionalQualifier in pairs( qualifiers ) do
for _, optionalQualifier in pairs( qualifiers ) do
-- handling case of "first or default" qualifier (e.g.: for 'P1/P2' take P1 if exists, otherwise - P2)
-- handling case of "first or default" qualifier (e.g.: for 'P1/P2' take P1 if exists, otherwise - P2)
local was_found = false
for selectableQualifier in string.gmatch(optionalQualifier, '[^/]+') do
for selectableQualifier in string.gmatch(optionalQualifier, '[^/]+') do
if selectableQualifier and property.qualifiers[selectableQualifier] then
if selectableQualifier and property.qualifiers[selectableQualifier] then
שורה 179: שורה 185:
local formattedValue = '<span title="'.. mw.wikibase.label(selectableQualifier)..'" class="propertylink-wikidata-qualifier">'..mw.wikibase.formatValues(property.qualifiers[selectableQualifier]) ..'</span>'
local formattedValue = '<span title="'.. mw.wikibase.label(selectableQualifier)..'" class="propertylink-wikidata-qualifier">'..mw.wikibase.formatValues(property.qualifiers[selectableQualifier]) ..'</span>'
table.insert(formmatedQualifiers, formattedValue)
table.insert(formmatedQualifiers, formattedValue)
was_found = true
defaultIsOn = false
break -- found first available value
break -- found first available value
end
end
elseif string.sub(selectableQualifier, 1, 1) ~= 'P' then
elseif string.sub(selectableQualifier, 1, 1) ~= 'P' then
table.insert(formmatedQualifiers, selectableQualifier)
table.insert(formmatedQualifiers, selectableQualifier)
was_found = true
defaultIsOn = false
break -- found first available value
break -- found first available value
end
end
end
if not was_found then
table.insert(formmatedQualifiers, defaultValue)
end
end
local res = ""
if not defaultIsOn then
res = table.concat( formmatedQualifiers, qualifiersSep)
if #formmatedQualifiers > 0 and addParenthesis then
res = mw.ustring.format('<span style="font-size:0.9em"> (%s)</span>', res)
end
end
end
end
local res =  table.concat( formmatedQualifiers, qualifiersSep)
if #formmatedQualifiers > 0 then
res = mw.ustring.format('<span style="font-size:0.9em;"> (%s)</span>', res)
end
return res .. warnings
return res .. warnings
end
end
שורה 289: שורה 305:
options['source'] = options['source'] or false
options['source'] = options['source'] or false
options['filter'] = options['filter'] or nil
options['filter'] = options['filter'] or nil
options['sort'] = options['sort'] or 'P1545'
options['sort'] = options['sort'] or { 'P1545' }
options['default-value'] = options['default-value'] or nil


     return --no such property for this item
     return --no such property for this item
שורה 318: שורה 335:


function getItem( propertyName, entityId )
function getItem( propertyName, entityId )
    local entity = entityId
    local entity = entityId
     if not entity then return end--the entity doesnt exist or have no claims
     if not entity then return end--the entity doesnt exist or have no claims
     local property =  mw.wikibase.getBestStatements(entity, propertyName)
     local property =  mw.wikibase.getBestStatements(entity, propertyName)