אונטערשייד צווישן ווערסיעס פון "יחידה:אינפאקעסטל/פערזענליכקייט"
קפיצה לניווט
קפיצה לחיפוש
אין תקציר עריכה |
אין תקציר עריכה |
||
(4 מיטלסטע ווערסיעס פון 2 באַניצער נישט געוויזן.) | |||
שורה 3: | שורה 3: | ||
local PropertyLink = require('Module:PropertyLink') | local PropertyLink = require('Module:PropertyLink') | ||
local ageModule = require('Module:עלטער') | local ageModule = require('Module:עלטער') | ||
local hebrewDateModule = require('Module: | local hebrewDateModule = require('Module:אידישע דאטום') | ||
local WikidataCrossValidation = require('Module:WikidataCrossValidation') | local WikidataCrossValidation = require('Module:WikidataCrossValidation') | ||
שורה 20: | שורה 20: | ||
local function getDeathLabel(deathCause, entityId) | local function getDeathLabel(deathCause, entityId) | ||
entityId = entityId or mw.wikibase.getEntityIdForCurrentPage() | --entityId = entityId or mw.wikibase.getEntityIdForCurrentPage() | ||
if deathCause == nil and entityId ~= nil then | if deathCause == nil and entityId ~= nil then | ||
local deathCauseWikidata = mw.wikibase.getBestStatements(entityId, 'P1196') | local deathCauseWikidata = mw.wikibase.getBestStatements(entityId, 'P1196') | ||
שורה 45: | שורה 45: | ||
function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, entityId) | function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, entityId) | ||
entityId = entityId or mw.wikibase.getEntityIdForCurrentPage() | --entityId = entityId or mw.wikibase.getEntityIdForCurrentPage() | ||
age = age or '' | age = age or '' | ||
local formattedEvent | local formattedEvent | ||
שורה 80: | שורה 80: | ||
local latestDate = deathDate or birthDate | local latestDate = deathDate or birthDate | ||
if latestDate == nil then return end | if latestDate == nil then return end | ||
local dateModule = require('Module: | local dateModule = require('Module:דאטום') | ||
local success, res = pcall(dateModule.parseDateRange, latestDate, 'raw') | local success, res = pcall(dateModule.parseDateRange, latestDate, 'raw') | ||
if success==false then return end -- there is no known VALID date | if success==false then return end -- there is no known VALID date | ||
שורה 123: | שורה 123: | ||
-- fill birth/death dates from wikidata is missing | -- fill birth/death dates from wikidata is missing | ||
usingBirthWikidata = fillWikidataParam(templateArgs, 'געבורט דאטום', 'P569', infoObj) | usingBirthWikidata = fillWikidataParam(templateArgs, 'געבורט דאטום', 'P569', infoObj) | ||
usingDeathWikidata = fillWikidataParam(templateArgs, 'טויט | usingDeathWikidata = fillWikidataParam(templateArgs, 'טויט דאטום', 'P570', infoObj) | ||
local birthDate = getSpeculativeDate(templateArgs['געבורט דאטום'], templateArgs[' | local birthDate = getSpeculativeDate(templateArgs['געבורט דאטום'], templateArgs['אידישע געבורט דאטום']) | ||
local deathDate = getSpeculativeDate(templateArgs['טויט | local deathDate = getSpeculativeDate(templateArgs['טויט דאטום'], templateArgs['אידישע טויט דאטום']) | ||
if birthDate~=nil then | if birthDate~=nil then | ||
שורה 133: | שורה 133: | ||
age = ageModule.ageCalc(birthDate, nil, true, false, true) or '' | age = ageModule.ageCalc(birthDate, nil, true, false, true) or '' | ||
end | end | ||
local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['געבורט דאטום'], templateArgs[' | local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['געבורט דאטום'], templateArgs['אידישע געבורט דאטום'], templateArgs['געבורט ארט'], 'P569', 'P19', age, usingBirthWikidata, infoObj.args.entityId) | ||
table.insert(infoObj.templateStructure, 1, { | table.insert(infoObj.templateStructure, 1, { | ||
label='געבורט', | label='געבורט', | ||
שורה 151: | שורה 151: | ||
deathLabel = getDeathLabel(templateArgs['סיבת המוות'], infoObj.args.entityId) | deathLabel = getDeathLabel(templateArgs['סיבת המוות'], infoObj.args.entityId) | ||
local age = ageModule.ageCalc(birthDate, deathDate, false, false, true) or '' | local age = ageModule.ageCalc(birthDate, deathDate, false, false, true) or '' | ||
local deathDetails, usingDeathWikidataEvent = getEventDetails(templateArgs['טויט | local deathDetails, usingDeathWikidataEvent = getEventDetails(templateArgs['טויט דאטום'], templateArgs['אידישע טויט דאטום'], templateArgs['טויט ארט'], 'P570', 'P20', age, usingDeathWikidata, infoObj.args.entityId) | ||
table.insert(infoObj.templateStructure, 2, { | table.insert(infoObj.templateStructure, 2, { | ||
label=deathLabel, | label=deathLabel, | ||
שורה 166: | שורה 166: | ||
table.insert(infoObj.templateStructure, 2, { | table.insert(infoObj.templateStructure, 2, { | ||
label=deathLabel, | label=deathLabel, | ||
data='{{{טויט | data='{{{טויט דאטום}}} <br/>{{{טויט ארט}}}' | ||
}) | }) | ||
end | end |
יעצטיגע רעוויזיע זינט 12:20, 10 מערץ 2023
דער מאדול פארברייטערט יחידה:אינפאקעסטל פאר אינפאקעסטלעך פון פערזענליכקייט. דער מאדול אנטהאלט אויטאמאטישן שטיץ אין די כאראקטעריסטישע פאראמעטערס פאר פערזענליכקייטן, צום ביישפיל, דאטומען און ערטער פון געבורט/פטירה, צוזאמען מיט דעם עלטער.
local Infobox = require('Module:תבנית מידע').Infobox
local LocationAndCountry = require('Module:LocationAndCountry')
local PropertyLink = require('Module:PropertyLink')
local ageModule = require('Module:עלטער')
local hebrewDateModule = require('Module:אידישע דאטום')
local WikidataCrossValidation = require('Module:WikidataCrossValidation')
--[[ Get general date if known, otherwise guess from hebrew date.
]]
function getSpeculativeDate(generalDate, hebrewDate)
if generalDate == '-' then return nil end
if generalDate~=nil and generalDate~='' then return generalDate end
if hebrewDate~=nil and hebrewDate~='' then
local success, sepcDate = pcall(hebrewDateModule.pick, mw.getCurrentFrame():newChild{ args = {hebrew=hebrewDate, world='', exact='כן' } })
if not success or sepcDate=='' then return nil end
return sepcDate
end
return nil
end
local function getDeathLabel(deathCause, entityId)
--entityId = entityId or mw.wikibase.getEntityIdForCurrentPage()
if deathCause == nil and entityId ~= nil then
local deathCauseWikidata = mw.wikibase.getBestStatements(entityId, 'P1196')
deathCauseWikidata = deathCauseWikidata and deathCauseWikidata[1] and deathCauseWikidata[1].mainsnak
if deathCauseWikidata then
deathCause = mw.wikibase.renderSnak(deathCauseWikidata)
end
end
local gender = PropertyLink.getPropertyByOptions( 'P21', entityId )
if deathCause and deathCause ~= '' then
if deathCause == 'נהרג' or deathCause == 'נהרגה' then
return (gender=='נקיבה' and 'נהרגה') or 'נהרג'
elseif deathCause == 'מארד' or deathCause == 'נרצח' or deathCause == 'נרצחה' or deathCause == 'רצח' then
return 'דערמארדעט'
elseif deathCause == 'התאבד' or deathCause == 'התאבדה' or deathCause == 'התאבדות' then
return (gender=='נקיבה' and 'התאבדה') or 'התאבד'
elseif deathCause == 'הוצא להורג' or deathCause == 'הוצאה להורג' or deathCause == 'עונש מוות' then
return 'הוצאה להורג'
end
end
return 'טויט'
end
function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, entityId)
--entityId = entityId or mw.wikibase.getEntityIdForCurrentPage()
age = age or ''
local formattedEvent
if generalDate~=nil and generalDate~='' then
formattedEvent = generalDate .. age
if hebDate~=nil and hebDate~='' then
formattedEvent = formattedEvent ..'<br/>' ..hebDate
end
elseif hebDate~=nil and hebDate~='' then
formattedEvent = hebDate .. age
end
if (eventPlace == nil or eventPlace == '') and entityId then
local success, res = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, propDate , 1)
if success and res and #res>0 then
usingWikidata = true
eventPlace = res
end
end
if eventPlace~='' and eventPlace~=nil and eventPlace~='-' then
formattedEvent = formattedEvent..'<br/>' ..eventPlace
end
if usingWikidata and entityId then
formattedEvent = formattedEvent .. ' [[File:Blue pencil RTL.svg|15px|link=https://www.wikidata.org/wiki/'..entityId.. '?uselang=yi#P569|רעדאקטירן דעם פֿאקט ביי וויקידאטן]]'
end
return formattedEvent, usingWikidata
end
function addMissingImage(infoObj, birthDate, deathDate)
if infoObj.args.image ~= nil and #infoObj.args.image > 0 then return end -- there is already image
local latestDate = deathDate or birthDate
if latestDate == nil then return end
local dateModule = require('Module:דאטום')
local success, res = pcall(dateModule.parseDateRange, latestDate, 'raw')
if success==false then return end -- there is no known VALID date
local yearsEstimated = res/(60*60*24*365)
if yearsEstimated>150 then return end
if infoObj.args.entityId == nil then
return false -- no wikidata entity
end
local gender = PropertyLink.getPropertyByOptions( 'P21', infoObj.args.entityId )
local frame = mw.getCurrentFrame()
infoObj.args.image = frame:expandTemplate{ title = 'קיין בילד', args = { gender, ['אויסגלייכונג'] = 'center' } }
end
function fillWikidataParam(templateArgs, paramName, property, infoObj)
local usingWikidata = false
if infoObj.args.entityId == nil then
return false -- no wikidata entity
end
if templateArgs[paramName]==nil or templateArgs[paramName]=='' then
templateArgs[paramName] = PropertyLink.getPropertyByOptions( property, infoObj.args.entityId )
if templateArgs[paramName] and #templateArgs[paramName]>0 then
usingWikidata = true
end
else
local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId )
if matching then
table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property))
end
end
return usingWikidata
end
function addPersonDetails(frame, infoObj)
local templateArgs = frame:getParent().args
local usingBirthWikidata = false
local usingDeathWikidata = false
local birthLabel = 'געבורט'
local deathLabel = 'טויט'
-- fill birth/death dates from wikidata is missing
usingBirthWikidata = fillWikidataParam(templateArgs, 'געבורט דאטום', 'P569', infoObj)
usingDeathWikidata = fillWikidataParam(templateArgs, 'טויט דאטום', 'P570', infoObj)
local birthDate = getSpeculativeDate(templateArgs['געבורט דאטום'], templateArgs['אידישע געבורט דאטום'])
local deathDate = getSpeculativeDate(templateArgs['טויט דאטום'], templateArgs['אידישע טויט דאטום'])
if birthDate~=nil then
local age = nil
if deathDate==nil then
age = ageModule.ageCalc(birthDate, nil, true, false, true) or ''
end
local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['געבורט דאטום'], templateArgs['אידישע געבורט דאטום'], templateArgs['געבורט ארט'], 'P569', 'P19', age, usingBirthWikidata, infoObj.args.entityId)
table.insert(infoObj.templateStructure, 1, {
label='געבורט',
data=birthDetails
})
usingBirthWikidata = usingBirthWikidata or usingBirthWikidataEvent
else
if templateArgs['געבורט ארט']~= '-' and templateArgs['געבורט ארט']~= '' and templateArgs['געבורט ארט']~=nil and #templateArgs['געבורט ארט']>0 then
table.insert(infoObj.templateStructure, 1, {
label=birthLabel,
data= templateArgs['געבורט ארט']
})
end
end
if deathDate~=nil then
deathLabel = getDeathLabel(templateArgs['סיבת המוות'], infoObj.args.entityId)
local age = ageModule.ageCalc(birthDate, deathDate, false, false, true) or ''
local deathDetails, usingDeathWikidataEvent = getEventDetails(templateArgs['טויט דאטום'], templateArgs['אידישע טויט דאטום'], templateArgs['טויט ארט'], 'P570', 'P20', age, usingDeathWikidata, infoObj.args.entityId)
table.insert(infoObj.templateStructure, 2, {
label=deathLabel,
data=deathDetails
})
usingDeathWikidata = usingDeathWikidata or usingDeathWikidataEvent
end
if infoObj.isSelfUse then
table.insert(infoObj.templateStructure, 1, {
label=birthLabel,
data='{{{געבורט דאטום}}}<br/>{{{געבורט ארט}}}'
})
table.insert(infoObj.templateStructure, 2, {
label=deathLabel,
data='{{{טויט דאטום}}} <br/>{{{טויט ארט}}}'
})
end
if usingBirthWikidata or usingDeathWikidata then
infoObj.args.usingWikidata = true
end
if frame.args['כותרת0'] then
table.insert(infoObj.templateStructure, 1, {
header=1,
data=frame.args['כותרת0'],
rowstyle=frame.args['עיצוב-שורה0'],
rowclass=frame.args['מחלקה-שורה0'],
headerstyle=frame.args['כותרת0-עיצוב']
})
end
if frame.args['תמונה']~='-' then
addMissingImage(infoObj, birthDate, deathDate)
end
end
function infobox(frame)
local infoObj = Infobox:new()
frame.args['תמונה-גודל'] = frame.args['תמונה-גודל'] or '220'
infoObj:parseArgs(frame)
if infoObj.args.title~='-' then
addPersonDetails(frame, infoObj)
end
return infoObj:render()
end
return {
['אינפאקעסטל']=infobox,
['addPersonDetails'] = addPersonDetails
}