יחידה:שטומף
היחידה קיימת עבור תבנית {{שטומף}}. היא מאפשרת לנהל את היחידה בלי צורך בהוספת קוד כפול בכל פעם שיש צורך בסוג חדש. היחידה מחזירה שלוש פונקציות:
- הפונקציה main מחזירה את התבנית "שטומף" עבור סוג שטומף מסוים.
- הפונקציה templatedata מחזירה רשימה ממויינת של כל סוגי השטומףים עבור templatedata.
- הפונקציה categories מחזירה רשימה ממויינת של קטגוריות הערכים מכל הסוגים עבור התיעוד.
היחידה משתמשת ברשימת סוגים בדף יחידה:שטומף/list.json. היא כתובה בשפת json. מבנה הרשומה הוא כדלקמן:
- עבור רוב הסוגים המפתח הוא שם הסוג והתוכן הוא שם קובץ האייקון.
- עבור הסוגים בהם שם הסוג שונה משם הקטגוריה, התוכן הוא מערך בן שני איברים. הראשון הוא שם קובץ האייקון, והשני הוא שם הקטגוריה.
למשל:
"תל אביב-יפו": "Tel-aviv city hall.jpg",
"תל אביב": [
"Tel-aviv city hall.jpg",
"תל אביב-יפו"
],
הנחיות להוספת סוגים חדשים
- להוספת שטומף "Tel-Aviv" יש לבצע את הפעולות הבאות
- להוסיף לקובץ יחידה:שטומף/list.json שורה
,"Tel-Aviv": "Tel-aviv city hall.jpg"
- במידה ושם הסוג שונה משם הקטגוריה, השורה היא
,"Tel-Aviv": ["Tel-aviv city hall.jpg", "Tel-Aviv-Yafo"]
- במידה ויש צורך להוסיף מסגרת לתמונה, יש לעדכן את הקוד בצורה הבאה:
"יפן": "Flag of Japan.svg{{!}}גבול",
- שימו לב לפסיק לפני הטקסט. הוא נוסף כי צריך להיות פסיק אחרי כל שורה ברשימה, חוץ מהאחרונה.
- המנוע דואג אוטומטית לפורמט לאחר השמירה, כך שהפסיק יועבר לסוף השורה הקודמת. כך גם עם פרמוט נאות של סוגריים מרובעים.
- במידה ובאחד השמות ישנו סימן מרכאות כפולות, יש לכתוב סימן קו נטוי הפוך לפניו, למשל
"תנ\"ך"
- הרשימה הראשונית מויינה, אך אין בכך צורך, כי היחידה ממיינת אותה אוטומטית אחרי הקריאה.
- ניתן לעדכן את הרשימה ב-templatedata למטה באמצעות העתקה מדף מוסטער:שטומף/ליסטע. במידץ הצורך יש לנקות את המטמון באמצעות הכפתור בדף הזה. במידה בשם הסוג ישנם גרשיים כפולים, יש לשים קו נטוי הפוך לפני, למשל צה\"ל.
- רשימת הקטגוריות בדף הזה מתעדכנת אוטומטית. במידת הצורך ניתן לנקות את המטמון באמצעות הכפתור המצורף.
local jsonlist = mw.text.jsonDecode(mw.title.new('שטומף/list.json','Module'):getContent())
local defcode = {"{{שטומף/קוד|",
"|נושא נוסף=",
"|מידע נוסף=",
"|NoCategory={{#שווה:{{מרחב השם}}||",
"}}}}"}
local errcode = '<div style="border:1px solid #aaa; background:#FFF0F5;">[[טעקע:Nuvola apps important.svg|25px|רעכטס|ווארענונג]]דער ארטיקל איז א ' ..
'[[המכלול:שטומף|שטומף]], אבער זי איז נישט קלאפיצירט ווי איינע פון די טיפּן אינעם [[:קאטעגאריע:שטומף|שטומפן ליסטע]] אין [[המכלול]].' ..
' ביטע פארריכטן און קלייבן א נאמען פונעם ליסטע.</div>{{#תנאי:{{NAMESPACE}}||[[קאטעגאריע:נישט קלאסיפיצירטער שטומף]]}}'
local catcode = {"'''<nowiki>{{</nowiki>[[:קאטעגאריע:שטומף ",
"|שטומף|",
"]]<nowiki>}}</nowiki>'''"}
local catstartcode = "{{כתב מחוק|'''<nowiki>{{</nowiki>[[:קאטעגאריע:שטומף|שטומף]]<nowiki>}}</nowiki>'''}} לא בשימוש:" ..
" מותר רק שטומף ספציפי: <nowiki>{{שטומף|</nowiki>'''סוג השטומף'''<nowiki>}}</nowiki>{{הערה|שטומף לא ספציפי" ..
" יוצר [[:קאטעגאריע:שגיאות פרמטריות בתבנית שטומף|שגיאה פרמטרית]]}}"
function main(frame)
local parentargs = frame:getParent().args
local entry = parentargs[1] or 'כללי'
local param2 = parentargs[2] or ''
local parammidanosaf = parentargs['מידע נוסף'] or ''
local paramnocategory = parentargs['NoCategory'] or ''
local paramnocategoryyes = parentargs['NoCategory'] or 'yes'
local catanswer = mw.ustring.format('%s%s|%s%s', '{{קאטעגאריע בתבנית|:[[קאטעגאריע:שטומף - כל הערכים]]|ללא קאטעגאריע={{#שווה:{{מרחב השם}}||',
paramnocategory, paramnocategoryyes, '}}}}')
local ans = getparams(entry, jsonlist)
if (not ans)
then return frame:preprocess(errcode .. catanswer)
end
if (entry == 'כללי')
then param2 = ''
end
if (entry == 'שונות')
then param2 = ''
parammidanosaf = ''
end
return frame:preprocess(mw.ustring.format('%s%s%s%s%s%s|%s%s%s|%s%s', defcode[1], ans[2], defcode[2], param2, defcode[3],
parammidanosaf, ans[1], defcode[4], paramnocategory, paramnocategoryyes, defcode[5]) .. catanswer)
end
function getparams(entry, tab)
local value = tab[entry]
if (not value or type(value) == "table")
then return value
end
return {value, entry}
end
function templatedata(frame)
local ans = {}
for k, v in pairs( jsonlist )
do table.insert(ans, k)
end
table.sort(ans)
return table.concat(ans, ', ')
end
function categories(frame)
local ans = {}
local param
for k, v in pairs( jsonlist )
do if (k ~= 'כללי')
then if (type(v) == "table")
then param = v[2]
else param = k
end
table.insert(ans, mw.ustring.format("%s%s%s%s%s", catcode[1], param, catcode[2], k, catcode[3]))
end
end
table.sort(ans)
return frame:preprocess('<ol><li>' .. catstartcode .. '</li><li>' .. table.concat(ans, '</li><li>') .. '</li></ol>{{מטמון}}')
end
return {main = main, templatedata = templatedata, categories = categories}