אונטערשייד צווישן ווערסיעס פון "יחידה:תבנית מידע/אישיות"

פון המכלול
קפיצה לניווט קפיצה לחיפוש
ק (1 רעוויזיע אימפארטירט פון wikipedia:he:יחידה:תבנית_מידע/אישיות)
ק (מניעת שאיבת תאריכי לידה מוויקינתונים עבור דמות מקראית אנושית, לפי בקשה באולם הדיונים של התבניות)
שורה 1: שורה 1:
local Infobox = require('Module:תבנית מידע').Infobox
local Infobox = require('Module:תבנית מידע').Infobox
local LocationAndCountry = require('Module:LocationAndCountry')
local LocationAndCountry = require('Module:LocationAndCountry')
local PropertyLink = require('Module:PropertyLink')
local PropertyLink = require('Module:PropertyLink')
local ageModule = require('Module:גיל לערכי אישים')
local ageModule = require('Module:גיל לערכי אישים')
local Date = require('Module:תאריך')
local hebrewDateModule = require('Module:תאריך עברי')
local hebrewDateModule = require('Module:תאריך עברי')
local WikidataCrossValidation = require('Module:WikidataCrossValidation')
local WikidataCrossValidation = require('Module:WikidataCrossValidation')
שורה 20: שורה 20:
end
end


local function getDeathLabel(deathCause, entityId)
local function getDeathLabel(deathCause, entityId, gender)
local result=''
local fromWikidata=nil
entityId = entityId or mw.wikibase.getEntityIdForCurrentPage()
entityId = entityId or mw.wikibase.getEntityIdForCurrentPage()
if deathCause == nil and entityId ~= nil then
if ( deathCause == nil or deathCause =='' ) and entityId ~= nil then
local deathCauseWikidata = mw.wikibase.getBestStatements(entityId, 'P1196')
local deathCauseWikidata = mw.wikibase.getBestStatements(entityId, 'P1196')
deathCauseWikidata = deathCauseWikidata and deathCauseWikidata[1] and deathCauseWikidata[1].mainsnak
deathCauseWikidata = deathCauseWikidata and deathCauseWikidata[1] and deathCauseWikidata[1].mainsnak
if deathCauseWikidata then
if deathCauseWikidata then
deathCause = mw.wikibase.renderSnak(deathCauseWikidata)
deathCause = mw.wikibase.renderSnak(deathCauseWikidata)
fromWikidata=true
end
end
end
end
local gender = PropertyLink.getPropertyByOptions( 'P21', entityId )
 
if deathCause and deathCause ~= '' then
if deathCause and deathCause ~= '' then
if deathCause == 'נהרג' or deathCause == 'נהרגה' then
if deathCause == 'נהרג' or deathCause == 'נהרגה' or deathCause == 'מוות בקרב' or deathCause == 'נהרג בקרב' or deathCause == 'נהרגה בקרב' or deathCause == 'תאונה' or deathCause == 'טביעה' then
return (gender=='נקבה' and 'נהרגה') or 'נהרג'
return (gender=='נקבה' and 'נהרגה') or 'נהרג'
elseif deathCause == 'נרצח' or deathCause == 'נרצחה' or deathCause == 'רצח' then
elseif deathCause == 'נעדר' or deathCause == 'נעדרת' then
return (gender=='נקבה' and 'נעדרת') or 'נעדר'
elseif deathCause == 'נרצח' or deathCause == 'נרצחה' or deathCause == 'רצח' or deathCause == 'רצח המוני' or deathCause == 'רעל' then
return (gender=='נקבה' and 'נרצחה') or 'נרצח'
return (gender=='נקבה' and 'נרצחה') or 'נרצח'
        elseif deathCause == 'התאבד' or deathCause == 'התאבדה' or deathCause == 'התאבדות' then
    elseif deathCause == 'התאבד' or deathCause == 'התאבדה' or deathCause == 'התאבדות' then
return (gender=='נקבה' and 'התאבדה') or 'התאבד'
return (gender=='נקבה' and 'התאבדה') or 'התאבד'
elseif deathCause == 'הוצא להורג' or deathCause == 'הוצאה להורג' or deathCause == 'עונש מוות' then
elseif deathCause == 'הוצא להורג' or deathCause == 'הוצאה להורג' or deathCause == 'עונש מוות' or deathCause == 'תלייה' then
return 'הוצאה להורג'
return 'הוצאה להורג'
elseif not fromWikidata then result='[[קטגוריה:ערכים עם סיבת מוות שגויה בתבנית]]'
end
end
end
end
return 'פטירה'
return result .. 'פטירה'
end
end
 
function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, infoObj)
function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, entityId)
entityId = infoObj.args.entityId or mw.wikibase.getEntityIdForCurrentPage()
entityId = entityId or mw.wikibase.getEntityIdForCurrentPage()
age = age or ''
age = age or ''
local formattedEvent
local formattedEvent
local placeDate = propDate
if generalDate~=nil and generalDate~='' then
if generalDate~=nil and generalDate~='' then
local success, placeDateParsed  = pcall(Date.newFromWikitext, generalDate)
if success then
placeDate = placeDateParsed
end
formattedEvent = generalDate .. age
formattedEvent = generalDate .. age
if hebDate~=nil and hebDate~='' then  
if hebDate~=nil and hebDate~='' then  
שורה 59: שורה 68:
if (eventPlace == nil or eventPlace == '') and entityId then
if (eventPlace == nil or eventPlace == '') and entityId then
local success, res  = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, propDate , 1)
local success, res  = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, placeDate , 1)
if success and res and #res>0 then
if success and res and #res>0 then
usingWikidata = true
usingWikidata = true
eventPlace = res
eventPlace = res
end
else
local pageNs = mw.title.getCurrentTitle().namespace
if pageNs==0 and not infoObj.isNonPerson then
local matching = WikidataCrossValidation.crossValidate(eventPlace, propPlace, entityId )
if matching then
table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, propPlace))
end
end
end
end
end
שורה 71: שורה 88:
if usingWikidata and entityId then
if usingWikidata and entityId then
formattedEvent = formattedEvent .. ' [[File:Blue pencil RTL.svg|15px|link=https://www.wikidata.org/wiki/'..entityId.. '?uselang=yi#P569|עריכת הנתון בוויקינתונים]]'
formattedEvent = formattedEvent .. ' [[File:Blue pencil RTL.svg|15px|link=https://www.wikidata.org/wiki/'..entityId.. '?uselang=he#P569|עריכת הנתון בוויקינתונים]]'
end
end


שורה 77: שורה 94:
end
end


function addMissingImage(infoObj, birthDate, deathDate)
function addMissingImage(infoObj, birthDate, deathDate, gender)
if infoObj.args.image ~= nil and #infoObj.args.image > 0 then return end  -- there is already image  
if infoObj.args.image ~= nil and #infoObj.args.image > 0 then return end  -- there is already image  
local latestDate = deathDate or birthDate
local latestDate = deathDate or birthDate
שורה 87: שורה 104:
if yearsEstimated>150 then return end  
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()
local frame = mw.getCurrentFrame()
infoObj.args.image = frame:expandTemplate{ title = 'קיין בילד', args = { gender, ['יישור'] = 'center' } }
infoObj.args.image = frame:expandTemplate{ title = 'אין תמונה', args = { gender, ['יישור'] = 'מרכז' } }
end
end


שורה 99: שורה 111:
local usingWikidata = false
local usingWikidata = false
if infoObj.args.entityId == nil then
if infoObj.args.entityId == nil then
local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId )
if matching then
table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property))
end
return false -- no wikidata entity
return false -- no wikidata entity
end
end
שורה 107: שורה 123:
end
end
else
else
local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId )
local pageNs = mw.title.getCurrentTitle().namespace
if pageNs==0 and not infoObj.isNonPerson then
local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId )
if matching then
table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property))
end
end
end
return usingWikidata
end
 
local function instanceOfViolation(infoObj)
local pageNs = mw.title.getCurrentTitle().namespace
if pageNs~=0 then
return true
end
local wikidataInstanceOf = nil
if infoObj.args.entityId ~= nil then
wikidataInstanceOf = mw.wikibase.getBestStatements(infoObj.args.entityId, 'P31')
wikidataInstanceOf = wikidataInstanceOf and wikidataInstanceOf[1] and wikidataInstanceOf[1].mainsnak
end
if wikidataInstanceOf == nil then
local matching = WikidataCrossValidation.crossValidate('אדם', 'P31', infoObj.args.entityId )
if matching then
if matching then
table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property))
mw.logObject(matching)
table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, 'P31'))
end
else
wikidataInstanceOf = wikidataInstanceOf.datavalue and wikidataInstanceOf.datavalue.value and wikidataInstanceOf.datavalue.value.id
if wikidataInstanceOf ~= 'Q5' then
table.insert(infoObj.wikidataCats, '[[קטגוריה: ויקינתונים - תבניות אישיות למופע לא מתאים]]')
return true
end
end
end
end
return usingWikidata
return false
end
end


שורה 119: שורה 166:
local usingBirthWikidata = false
local usingBirthWikidata = false
local usingDeathWikidata = false
local usingDeathWikidata = false
local birthLabel = 'געבורט'
local birthLabel = 'לידה'
local deathLabel = 'טויט'  
local deathLabel = 'פטירה'  
-- fill birth/death dates from wikidata is missing
infoObj.isNonPerson = instanceOfViolation(infoObj)
usingBirthWikidata = fillWikidataParam(templateArgs, 'תאריך לידה', 'P569', infoObj)
usingDeathWikidata = fillWikidataParam(templateArgs, 'תאריך פטירה', 'P570', infoObj)
local wikidataGender = nil
if not infoObj.isNonPerson then
wikidataGender = PropertyLink.getItem( 'P21', infoObj.args.entityId )
if wikidataGender == nil then
table.insert(infoObj.wikidataCats, '[[קטגוריה:אישים חסרי מגדר בוויקינתונים]]')
else
if (wikidataGender == "Q6581097") then -- male
wikidataGender = 'זכר'
elseif (wikidataGender == "Q2449503") then -- transgender male
wikidataGender = 'זכר'
elseif (wikidataGender == "Q15145778") then -- cisgender male
wikidataGender = 'זכר'
elseif (wikidataGender == "Q6581072") then -- female
wikidataGender = 'נקבה'
elseif (wikidataGender == "Q1052281") then -- transgender female
wikidataGender = 'נקבה'
elseif (wikidataGender == "Q15145779") then -- cisgender female
wikidataGender = 'נקבה'
elseif wikidataGender == 'Q1097630' -- intersex
or wikidataGender == 'Q48270' -- non binary
then wikidataGender = '' -- עד שתחליטו
end
end
end
-- fill birth/death dates from wikidata if missing and the person is not a human biblical figure
if PropertyLink.getItem( 'P31', infoObj.args.entityId )~="Q20643955" then
usingBirthWikidata = fillWikidataParam(templateArgs, 'תאריך לידה', 'P569', infoObj)
usingDeathWikidata = fillWikidataParam(templateArgs, 'תאריך פטירה', 'P570', infoObj)
end
local birthDate = getSpeculativeDate(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'])
local birthDate = getSpeculativeDate(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'])
שורה 132: שורה 207:
local age = nil
local age = nil
if deathDate==nil then
if deathDate==nil then
age = ageModule.ageCalc(birthDate, nil, true, false, true) or ''
age = ageModule.ageCalc(birthDate, nil, true, false, true, nil, wikidataGender) or ''
end
end
local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'], templateArgs['מקום לידה'], 'P569', 'P19', age, usingBirthWikidata, infoObj.args.entityId)
local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'], templateArgs['מקום לידה'], 'P569', 'P19', age, usingBirthWikidata, infoObj)
table.insert(infoObj.templateStructure, 1, {
table.insert(infoObj.templateStructure, 1, {
label='געבורט',
label=birthLabel,
data=birthDetails
data=birthDetails
})
})
usingBirthWikidata = usingBirthWikidata or usingBirthWikidataEvent
usingBirthWikidata = usingBirthWikidata or usingBirthWikidataEvent
else
elseif templateArgs['מקום לידה']~= '-' then
    if templateArgs['מקום לידה']~= '-' and templateArgs['מקום לידה']~= '' and templateArgs['מקום לידה']~=nil and #templateArgs['מקום לידה']>0 then
fillWikidataParam(templateArgs, 'מקום לידה', 'P19', infoObj)
if templateArgs['מקום לידה']~= nil and templateArgs['מקום לידה']~= '' then -- only if we fill the parameter eventually - add to template
table.insert(infoObj.templateStructure, 1, {
table.insert(infoObj.templateStructure, 1, {
    label=birthLabel,
label=birthLabel,
    data= templateArgs['מקום לידה']
data= templateArgs['מקום לידה']
})  
})
  end
end
    end
end
 
deathLabel = getDeathLabel(templateArgs['סיבת המוות'], infoObj.args.entityId, wikidataGender)
if deathDate~=nil then
if deathDate~=nil then
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['תאריך פטירה'], templateArgs['תאריך פטירה עברי'], templateArgs['מקום פטירה'], 'P570', 'P20', age, usingDeathWikidata, infoObj.args.entityId)
local deathDetails, usingDeathWikidataEvent = getEventDetails(templateArgs['תאריך פטירה'], templateArgs['תאריך פטירה עברי'], templateArgs['מקום פטירה'], 'P570', 'P20', age, usingDeathWikidata, infoObj)
table.insert(infoObj.templateStructure, 2, {
table.insert(infoObj.templateStructure, 2, {
label=deathLabel,
label=deathLabel,
שורה 158: שורה 234:
})
})
usingDeathWikidata = usingDeathWikidata or usingDeathWikidataEvent
usingDeathWikidata = usingDeathWikidata or usingDeathWikidataEvent
elseif templateArgs['מקום פטירה']~= '-' then
fillWikidataParam(templateArgs, 'מקום פטירה', 'P20', infoObj)
if templateArgs['מקום פטירה']~= nil and templateArgs['מקום פטירה']~= '' then -- only if we fill the parameter eventually - add to template
table.insert(infoObj.templateStructure, 2, {
label=deathLabel,
data= templateArgs['מקום פטירה']
})
end
end
end
שורה 186: שורה 270:


if frame.args['תמונה']~='-' then
if frame.args['תמונה']~='-' then
addMissingImage(infoObj, birthDate, deathDate)
addMissingImage(infoObj, birthDate, deathDate, wikidataGender)
end
end
end
end

רעוויזיע פון 17:54, 12 פעברואר 2023

מען קען שאפן דאקומענטאציע פאר דעם מאדול ביי יחידה:תבנית מידע/אישיות/דאק

local Infobox = require('Module:תבנית מידע').Infobox
local LocationAndCountry = require('Module:LocationAndCountry')
local PropertyLink = require('Module:PropertyLink')
local ageModule = require('Module:גיל לערכי אישים')
local Date = 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, gender)
	local result=''
	local fromWikidata=nil
	entityId = entityId or mw.wikibase.getEntityIdForCurrentPage()
	if ( deathCause == nil or deathCause =='' ) 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)
			fromWikidata=true
		end
	end

	if deathCause and deathCause ~= '' then
		if deathCause == 'נהרג' or deathCause == 'נהרגה' or deathCause == 'מוות בקרב' or deathCause == 'נהרג בקרב' or deathCause == 'נהרגה בקרב' or deathCause == 'תאונה' or deathCause == 'טביעה' then
			return (gender=='נקבה' and 'נהרגה') or 'נהרג'
		elseif deathCause == 'נעדר' or deathCause == 'נעדרת' then
			return (gender=='נקבה' and 'נעדרת') or 'נעדר'
		elseif deathCause == 'נרצח' or deathCause == 'נרצחה' or deathCause == 'רצח' or deathCause == 'רצח המוני' or deathCause == 'רעל' then
			return (gender=='נקבה' and 'נרצחה') or 'נרצח'
	    elseif deathCause == 'התאבד' or deathCause == 'התאבדה' or deathCause == 'התאבדות' then
			return (gender=='נקבה' and 'התאבדה') or 'התאבד'
		elseif deathCause == 'הוצא להורג' or deathCause == 'הוצאה להורג' or deathCause == 'עונש מוות' or deathCause == 'תלייה' then
			return 'הוצאה להורג'
		elseif not fromWikidata then result='[[קטגוריה:ערכים עם סיבת מוות שגויה בתבנית]]'
		end
	end
	return result .. 'פטירה'
end
function getEventDetails(generalDate, hebDate, eventPlace, propDate, propPlace, age, usingWikidata, infoObj)
	entityId = infoObj.args.entityId or mw.wikibase.getEntityIdForCurrentPage()
	age = age or ''
	local formattedEvent
	local placeDate = propDate
	if generalDate~=nil and generalDate~='' then
		local success, placeDateParsed  = pcall(Date.newFromWikitext, generalDate)
		if success then
			placeDate = placeDateParsed
		end
		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, placeDate , 1)
		if success and res and #res>0 then
			usingWikidata = true
			eventPlace = res
		end
	else
		local pageNs = mw.title.getCurrentTitle().namespace
		if pageNs==0 and not infoObj.isNonPerson then
			local matching = WikidataCrossValidation.crossValidate(eventPlace, propPlace, entityId )
			if matching then
				table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, propPlace))
			end
		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=he#P569|עריכת הנתון בוויקינתונים]]'
	end

	return formattedEvent, usingWikidata
end

function addMissingImage(infoObj, birthDate, deathDate, gender)
	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 
	
	local frame = mw.getCurrentFrame()
	infoObj.args.image = frame:expandTemplate{ title = 'אין תמונה', args = { gender, ['יישור'] = 'מרכז' } }
end

function fillWikidataParam(templateArgs, paramName, property, infoObj)
	local usingWikidata = false
	if infoObj.args.entityId == nil then
		local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId )
		if matching then
			table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property))
		end
		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 pageNs = mw.title.getCurrentTitle().namespace
		if pageNs==0 and not infoObj.isNonPerson then
			local matching = WikidataCrossValidation.crossValidate(templateArgs[paramName], property, infoObj.args.entityId )
			if matching then
				table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, property))
			end
		end
	end
	return usingWikidata
end

local function instanceOfViolation(infoObj)
	local pageNs = mw.title.getCurrentTitle().namespace
	if pageNs~=0 then
		return true
	end
	
	local wikidataInstanceOf = nil
	if infoObj.args.entityId ~= nil then
		wikidataInstanceOf = mw.wikibase.getBestStatements(infoObj.args.entityId, 'P31')
		wikidataInstanceOf = wikidataInstanceOf and wikidataInstanceOf[1] and wikidataInstanceOf[1].mainsnak
	end
	
	if wikidataInstanceOf == nil then
		local matching = WikidataCrossValidation.crossValidate('אדם', 'P31', infoObj.args.entityId )
		if matching then
			mw.logObject(matching)
			table.insert(infoObj.wikidataCats, WikidataCrossValidation.maintainceCategory(matching, 'P31'))
		end
	else
		wikidataInstanceOf = wikidataInstanceOf.datavalue and wikidataInstanceOf.datavalue.value and wikidataInstanceOf.datavalue.value.id
		if wikidataInstanceOf ~= 'Q5' then
			table.insert(infoObj.wikidataCats, '[[קטגוריה: ויקינתונים - תבניות אישיות למופע לא מתאים]]')
			return true
		end
	end
	return false
end

function addPersonDetails(frame, infoObj)
	local templateArgs = frame:getParent().args
	local usingBirthWikidata = false
	local usingDeathWikidata = false
	local birthLabel = 'לידה'
	local deathLabel = 'פטירה' 
	
	infoObj.isNonPerson = instanceOfViolation(infoObj)
	
	local wikidataGender = nil
	if not infoObj.isNonPerson then
		wikidataGender = PropertyLink.getItem( 'P21', infoObj.args.entityId )
		if wikidataGender == nil then
			table.insert(infoObj.wikidataCats, '[[קטגוריה:אישים חסרי מגדר בוויקינתונים]]')
		else
			if (wikidataGender == "Q6581097") then		-- male
				wikidataGender = 'זכר'
			elseif (wikidataGender == "Q2449503") then	-- transgender male
				wikidataGender = 'זכר'
			elseif (wikidataGender == "Q15145778") then	-- cisgender male
				wikidataGender = 'זכר'
			elseif (wikidataGender == "Q6581072") then	-- female
				wikidataGender = 'נקבה'
			elseif (wikidataGender == "Q1052281") then	-- transgender female
				wikidataGender = 'נקבה'
			elseif (wikidataGender == "Q15145779") then	-- cisgender female
				wikidataGender = 'נקבה'
			elseif wikidataGender == 'Q1097630' -- intersex
					or wikidataGender == 'Q48270' -- non binary
				then wikidataGender = '' -- עד שתחליטו
			end
		end
	end
	-- fill birth/death dates from wikidata if missing and the person is not a human biblical figure
	if PropertyLink.getItem( 'P31', infoObj.args.entityId )~="Q20643955" then
		usingBirthWikidata = fillWikidataParam(templateArgs, 'תאריך לידה', 'P569', infoObj)
		usingDeathWikidata = fillWikidataParam(templateArgs, 'תאריך פטירה', 'P570', infoObj)
	end
	
	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, nil, wikidataGender) or ''
		end
		local birthDetails, usingBirthWikidataEvent = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'], templateArgs['מקום לידה'], 'P569', 'P19', age, usingBirthWikidata, infoObj)
			table.insert(infoObj.templateStructure, 1, {
			label=birthLabel,
			data=birthDetails
		})
		usingBirthWikidata = usingBirthWikidata or usingBirthWikidataEvent
	elseif templateArgs['מקום לידה']~= '-' then
		fillWikidataParam(templateArgs, 'מקום לידה', 'P19', infoObj)
		if  templateArgs['מקום לידה']~= nil and templateArgs['מקום לידה']~= '' then -- only if we fill the parameter eventually - add to template
			table.insert(infoObj.templateStructure, 1, {
				label=birthLabel,
				data= templateArgs['מקום לידה']
			})
		end
	end

	deathLabel = getDeathLabel(templateArgs['סיבת המוות'], infoObj.args.entityId, wikidataGender)
	if deathDate~=nil then
		local age =  ageModule.ageCalc(birthDate, deathDate, false, false, true) or ''
		local deathDetails, usingDeathWikidataEvent = getEventDetails(templateArgs['תאריך פטירה'], templateArgs['תאריך פטירה עברי'], templateArgs['מקום פטירה'], 'P570', 'P20', age, usingDeathWikidata, infoObj)
			table.insert(infoObj.templateStructure, 2, {
			label=deathLabel,
			data=deathDetails
		})
		usingDeathWikidata = usingDeathWikidata or usingDeathWikidataEvent
	elseif templateArgs['מקום פטירה']~= '-' then
		fillWikidataParam(templateArgs, 'מקום פטירה', 'P20', infoObj)
		if templateArgs['מקום פטירה']~= nil and templateArgs['מקום פטירה']~= '' then -- only if we fill the parameter eventually - add to template
			table.insert(infoObj.templateStructure, 2, {
				label=deathLabel,
				data= templateArgs['מקום פטירה']
			})
		end
	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, wikidataGender)
	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
}