לדלג לתוכן
תפריט ראשי
תפריט ראשי
העברה לסרגל הצד
הסתרה
ניווט
עמוד ראשי
ברוכים הבאים
אולם דיונים
שינויים אחרונים
ערך אקראי
דיווח על טעות
עזרה
צור קשר/תרומה
פורטלים
נשיאי חב"ד
ימי חב"ד
גאולה ומשיח
תורת החסידות
תורת הנגלה
ניגוני חב"ד
ספרות חב"ד
בית רבי
אישי חב"ד
הפצת המעיינות
קישורים
חב"ד אינפו
ארכיון גאולה ומשיח
חב"דפדיה
חיפוש
חיפוש
מראה
יצירת חשבון
כניסה לחשבון
כלים אישיים
יצירת חשבון
כניסה לחשבון
דפים לעורכים שלא נכנסו לחשבון
מידע נוסף
תרומות
שיחה
עריכת הדף "
יחידה:גיל לערכי אישים
"
יחידה
שיחה
English
קריאה
עריכת קוד מקור
גרסאות קודמות
כלים
כלים
העברה לסרגל הצד
הסתרה
פעולות
קריאה
עריכת קוד מקור
גרסאות קודמות
כללי
דפים המקושרים לכאן
שינויים בדפים המקושרים
דפים מיוחדים
מידע על הדף
מראה
העברה לסרגל הצד
הסתרה
אזהרה:
אינכם מחוברים לחשבון. כתובת ה־IP שלכם תוצג בפומבי אם תבצעו עריכות כלשהן. אם
תיכנסו לחשבון
או
תיצרו חשבון
, העריכות שלכם תיוחסנה לשם המשתמש שלכם ותקבלו גם יתרונות אחרים.
בדיקת אנטי־ספאם.
אין
למלא שדה זה!
local dateParser = require( "Module:תאריך" ) local Arguments = require( "Module:Arguments" ) local Errors = { ['future-date'] = '[[קטגוריה:תאריכי חיים לא נכונים]]' } function ToDate(frame, Date, ApproxDate) local isValidDate, res = pcall(dateParser.newFromWikitext, Date) local errors = '' if isValidDate and dateParser.age(res).year<0 then -- date is in the future isValidDate = false local title = mw.title.getCurrentTitle() if title.namespace==0 then errors = Errors['future-date'] else errors = '<!--' .. Errors['future-date'] .. '-->' end elseif not isValidDate or res.precision < dateParser.PRECISION.YEAR then -- date is either invalid or is imprecise isValidDate = false -- mark as invalid anyway, even if "only" imprecise errors = frame:expandTemplate{ title = 'גיל לערכי אישים/בעיה', args = { ['מקורב']=ApproxDate, ['נוסף']=Date, ['מחרוזת']=Date } } end return isValidDate, res, errors end function consistentWithWikidata(localDate, wikidataClaim) local possibleDate, possibleDateValue, isConsistent if not wikidataClaim then return true end isConsistent = true for i,possibleDate in ipairs(wikidataClaim) do if possibleDate.mainsnak and possibleDate.mainsnak.datavalue and possibleDate.mainsnak.datavalue.value then possibleDateValue = possibleDate.mainsnak.datavalue.value local iswikidataValid, wikidataDate = pcall(dateParser.newFromWikidataValue, possibleDateValue) if iswikidataValid and localDate.calendar == wikidataDate.calendar then if (localDate.year ~= wikidataDate.year and possibleDateValue.precision>=dateParser.PRECISION.YEAR) or (localDate.month ~= wikidataDate.month and possibleDateValue.precision>=dateParser.PRECISION.MONTH) or (localDate.day ~= wikidataDate.day and possibleDateValue.precision>=dateParser.PRECISION.DAY) then isConsistent = false else isConsistent = true break end end end end return isConsistent end function ageCalcFromFrame(frame) local args = Arguments.getArgs(frame, { ['trim'] = true, ['removeBlanks'] = true }) --local age_string = args['מציין'] local BirthDateStr = args['תאריך לידה'] local DeathDateStr = args['תאריך פטירה'] local DisplayForAlive = args['הצג אם בחיים'] local DisplayForDead = args['הצג אם נפטר'] local Brackets = args['סוגריים'] local ApproxDate = args['מקורב'] DisplayForAlive = (DisplayForAlive=='כן') DisplayForDead = (DisplayForDead=='כן') Brackets = (Brackets~='לא') return ageCalc(BirthDateStr, DeathDateStr, DisplayForAlive, DisplayForDead, Brackets, ApproxDate) end function ageCalc(BirthDateStr, DeathDateStr, DisplayForAlive, DisplayForDead, Brackets, ApproxDate, gender) local frame = mw.getCurrentFrame() local warnings = {} local dateRangeStr local wikidataBirth, wikidataDeath if BirthDateStr == '' then BirthDateStr = nil end if DeathDateStr == '' then DeathDateStr = nil end wikidataBirth = entityId and mw.wikibase.getBestStatements( entityId, 'P569' ) wikidataDeath = entityId and wikidataBirth and mw.wikibase.getBestStatements( entityId, 'P570' ) BirthDateStr = BirthDateStr or ((wikidataBirth and #wikidataBirth>0 and mw.wikibase.renderSnak( wikidataBirth[1].mainsnak ) or nil)) -- validate dates are valid if not BirthDateStr then return -- missing date, nothing to do end DeathDateStr = DeathDateStr or ((wikidataDeath and #wikidataDeath>0 and mw.wikibase.renderSnak( wikidataDeath[1].mainsnak ) or nil)) if DeathDateStr =='' then DeathDateStr = nil end local IsDead = (DeathDateStr~=nil) -- early termination if (DisplayForDead~=IsDead) and (DisplayForAlive==IsDead) then return '' end local isValidDate, BirthDate, errDate = ToDate(frame, BirthDateStr, ApproxDate) if not isValidDate then return errDate end if wikidataBirth and wikidataBirth[1] and wikidataBirth[1].mainsnak then if not consistentWithWikidata(BirthDate, wikidataBirth) then table.insert(warnings, '[[קטגוריה:דפים עם שנות חיים שלא תואמים את ויקינתונים]]') end end -- skip age calculation if we dont have enough precision if BirthDate.precision < dateParser.PRECISION.YEAR then return nil end local DeathDate if IsDead then isValidDate, DeathDate, errDate = ToDate(frame, DeathDateStr, ApproxDate) if not isValidDate then return errDate-- invalid death date end if not consistentWithWikidata(DeathDate, wikidataDeath) then table.insert(warnings, '[[קטגוריה:דפים עם שנות חיים שלא תואמים את ויקינתונים]]') end prefix = 'בגיל ' else if gender == nil and entityId~=nil then local PropertyLink = require('Module:PropertyLink') gender = PropertyLink.getItem( 'P21', entityId ) if (gender == "Q6581097") then -- male gender = 'זכר' elseif (gender == "Q6581072") then -- female gender = 'נקבה' end end prefix = 'גיל: ' if gender == 'נקבה' then prefix = 'בת ' elseif gender == 'זכר' then prefix = 'בן ' end end -- skip age calculation if we dont have enough precision if DeathDate and DeathDate.precision and DeathDate.precision < dateParser.PRECISION.YEAR then return nil end local success, Age = pcall(dateParser.age, BirthDate , DeathDate) if success then AgeYears = Age.year if Age.year <= 0 then if Age.month == 1 then result = prefix..'חודש' elseif Age.month == 2 then result = prefix..'חודשיים' else result = prefix..tostring(Age.month)..' חודשים' end if Age.day > 0 then if Age.day == 1 then result = result..' ויום' elseif Age.day == 2 then result = result..' ויומיים' else result = result..' ו־'..tostring(Age.day)..' ימים' end end elseif Age.year < 3 then if Age.year == 1 then result = prefix..'שנה' elseif Age.year == 2 then result = prefix..'שנתיים' end if Age.month == 0 then if Age.day > 0 then if Age.day == 1 then result = result..' ויום' elseif Age.day == 2 then result = result..' ויומיים' else result = result..' ו־'..tostring(Age.day)..' ימים' end end elseif Age.month == 1 then result = result..' וחודש' elseif Age.month == 2 then result = result..' וחודשיים' else result = result..' ו־'..tostring(Age.month)..' חודשים' end else result = prefix..tostring(Age.year) end if BirthDate.precision < dateParser.PRECISION.MONTH or (DeathDate and DeathDate.precision < dateParser.PRECISION.MONTH) then result = result .. ' בערך' end -- ignore warning in specific template local noAgeWarning = false if mw.getCurrentFrame():getParent():getTitle() == 'תבנית:אישיות תנ"כית' or mw.getCurrentFrame():getParent():getTitle() == 'תבנית:בעל חיים מפורסם' then noAgeWarning = true end local title = mw.title.getCurrentTitle() -- ignore warning in other namespace except the main NS if title.namespace==0 and not noAgeWarning then if AgeYears > 139 then local instanceOf = entityId and mw.wikibase.getBestStatements( entityId, 'P31' ) local isHuman = instanceOf and instanceOf[1].mainsnak and instanceOf[1].mainsnak.datavalue.value.id=='Q5' if isHuman then table.insert(warnings, Errors['future-date']) end elseif AgeYears>109 then table.insert(warnings, '[[קטגוריה:אישים שהגיעו לגיל 110]]') elseif AgeYears>99 then table.insert(warnings, '[[קטגוריה:אישים שהגיעו לגיל מאה]]') end end else result = '?' .. frame:expandTemplate{ title = 'גיל לערכי אישים/בעיה', args = { ['מקורב']=ApproxDate, ['נוסף']=DeathDate, ['מחרוזת']=dateRangeStr } } end warnings = table.concat( warnings, '') if #warnings > 0 then warnings = string.format('%s ', warnings) end if Brackets then result = string.format(' (%s)', result) end return string.format('%s<span style="white-space: nowrap;">%s</span>', warnings, result) end return { ['גיל'] = ageCalcFromFrame, ageCalc = ageCalc }
תקציר:
לתשומת ליבך: תרומתך לאתר חב"דפדיה תפורסם לפי תנאי הרישיון GNU Free Documentation License 1.2 (אפשר לעיין בדף
חב"דפדיה:זכויות יוצרים
לפרטים נוספים). אם אינך רוצה שעבודתך תהיה זמינה לעריכה על־ידי אחרים, שתופץ לעיני כול, ושאחרים יוכלו להעתיק ממנה תוך ציון המקור – אין לפרסם אותה פה.
כמו־כן, שמירת העריכה משמעה הבטחה שכתבת את הטקסט הזה בעצמך או העתקת אותו ממקור בנחלת הכלל (שאינו מוגבל בזכויות יוצרים) או מקור חופשי דומה.
אין לשלוח חומר מוגבל בזכויות יוצרים ללא רשות!
ביטול
עזרה בעריכה
(נפתח בחלון חדש)
תבנית המופיעה בדף זה:
יחידה:גיל לערכי אישים/תיעוד
(
עריכה
)