עריכת הדף "
חב"דפדיה:לואה
"
קפיצה לניווט
קפיצה לחיפוש
אזהרה:
אינכם מחוברים לחשבון. כתובת ה־IP שלכם תוצג בפומבי אם תבצעו עריכות כלשהן. אם
תיכנסו לחשבון
או
תיצרו חשבון
, העריכות שלכם תיוחסנה לשם המשתמש שלכם ותקבלו גם יתרונות אחרים.
בדיקת אנטי־ספאם.
אין
למלא שדה זה!
ההרחבה '''Scribunto''', שמאפשרת כתיבת מודולים בשפת '''[[Lua]]''' ושימוש בהם ב[[ויקיפדיה:תבנית|תבניות]], הופעלה בוויקיפדיה העברית. למרבה הצער קצת קשה למצוא תיעוד שימושי. תיעוד כללי לשפת Lua קיים, אבל תעוד שמסביר את השימוש בוויקיפדיה קצת יותר קשה למצוא. ==תיעוד== תיעוד באנגלית [[mw:Extension:Scribunto/Lua_reference_manual|ניתן לקרוא כאן]]. ==איך זה פועל== להבדיל מתבניות, שהן בעצם דפים "רגילים" שיכולים להימצא במרחב שם כלשהו, מודולים חייבים להמצא במרחב שם חדש שנקרא "יחידה" (באנגלית module). כל יחידה מחזירה משתנה מקומי, שהשדות השונים שלו הם פונקציות שתבניות יכולות להשתמש בהן. כך נראית יחידה שנקראת, נניח, M, (כלומר, נמצאת בדף [[יחידה:M]]) ומייצאת שתי פונקציות: f1 ו-f2: <syntaxhighlight lang="lua"> local m = {} -- you can use any name you want - it does not have to be identical to the module name function m.f1(frame) return "שלום לכולם" end -- these two ways to define the function are practically synonymous. the 2nd form below is more common. m.f2 = function(frame) return "להתראות" end -- this function cannot be called using #invoke, because it's not a member of m. it can be called from other functions in the module. function f3(x) return x * 2 end -- however, we can expose a function, say, f4, by defining it first, and then adding it to m like so: function something(frame) -- do something end m.f4 = something -- for Hebrew function names, use the following syntax: m["עברית"] = function(frame) return "שלום בעברית" end return m </syntaxhighlight> כדי להשתמש במודול, יש "מילת קסם" חדשה בשם invoke. למילה הזו יש לתת שני פרמטרים: שם המודול ושם הפונקציה. בנוסף, אפשר להוסיף פרמטרים נוספים ככל שנדרש - פרמטרים נוספים אלו יועברו לפונקציה. הנה דוגמה להפעלת הפונקציה f1 בלי פרמטרים: {{משמאל לימין| <nowiki>{{#invoke:M|f1}}</nowiki>}} כנראה גם למילת הקסם invoke יהיה תרגום לעברית. ===העברת פרמטרים לפונקציה ב-Lua=== הפונקציה שנקראת מ-invoke מקבלת תמיד פרמטר יחיד שנהוג (אם כי לא חובה) לקרוא לו frame. פרמטר זה אורז בתוכו מידע שהפונקציה ב-lua יכולה למצות ולהשתמש בו. לדוגמה, מידע על התבנית שמכילה את הקריאה ל-invoke ארוז ב-{{משמאל לימין|frame:getParent()}}. בדומה, הפרמטרים שמועברים מהתבנית ארוזים ב-frame.args. בדומה לפרמטרים לתבניות, פרמטרים לפונקציה יכולים להיות מבוססי סדר או שמיים. נניח שאנחנו רוצים להעביר לפונקציה king_wives שלושה פרמטרים: פרמטר שמי בשם "מלך", ושני פרמטרים מבוססי סדר: {{משמאל לימין| <nowiki>{{#invoke:m|king_wives|מלך=שלמה|40|25}}</nowiki>}} הפונקציה ניגשת לפרמטרים בעזרת args: <syntaxhighlight lang="lua"> function m.king_wives(frame) local king = frame.args["מלך"] local param1 = frame.args[1] local param2 = frame.args[2] -- do something with the parameters, e.g.: return string.format("ל%s המלך היו %d נשים", king, param1 * param2) end </syntaxhighlight> אם נקרא לפונקציה כמו בדוגמה למעלה, נקבל בדף "לשלמה המלך היו 1000 נשים". לעומת זאת, הקריאה: {{משמאל לימין| <nowiki>{{#invoke:m|king_wives|מלך=דוד|3|6}}</nowiki>}} תניב "לדוד המלך היו 18 נשים". ===הערך המוחזר מהפונקציה=== הפונקציות הפנימיות במודול יכולות להחזיר ערך מסוג כלשהו - שום דבר, מספר, מחרוזת, טבלה, ערך בוליאני, או אפילו פונקציה. פונקציה "ראשית", כלומר כזו שנקראת מקוד ויקי, צריכה להחזיר מחרוזת. אחרי הקריאה לפונקציה, המחרוזת שהוחזרה מועברת לפורס (parser) להמשך העיבוד. המשמעות היא שאם הפונקציה רוצה, למשל, לצייר תמונה, היא לא אמורה להחזיר מחרוזת html עם תג img, אלא מחרוזת בקוד ויקי, כמו שהייתם שמים בדף - <nowiki>[[קובץ:שם הקובץ]]</nowiki>. אם הפונקציה רוצה לצייר טבלה, היא מחזירה את קוד הוויקי של הטבלה. בדומה, ניתן להחזיר קריאה לתבנית וכן הלאה. ==פיתוח ו"ארגז חול"== ההרחבה [[Special:TemplateSandbox|ארגז חול לתבניות]] תומכת גם בסקריבונטו. במלים אחרות, ניתן לפתח ולבדוק מודולים במרחב המשתמש, לפני העברתם למרחב יחידה ====הסבר ודוגמה==== המשתמשת [[משתמשת:אלמונית]] רוצה לפתח מודול חדש בשם "אתגר", או לבדוק שינויים שהיא רוצה לעשות במודול קיים בשם זה. לשם כך היא מייצרת דף חדש בשם '''"משתמשת:אלמונית/ארגז חול/יחידה:אתגר"'''. שימו לב לשתי נקודות עדינות: #הנקודתיים בשם הדף, ש"מתחזות" לנקודתיים הרגילות שמפרידות בין מרחב שם ושם דף, אבל במקרה הזה לא מדובר בדף במרחב יחידה, אלא בדף במרחב המשתמש, ששמו מכיל נקודתיים. #כשמשתמשים בשם מודול באותיות לטיניות, השם '''חייב''' להתחיל באות גדולה, ובאופן כללי השם הוא תלוי רישיות. בקריאה למודול (כלומר כשמפעילים את מילת הקסם invoke#), המערכת תחליף את האות הראשונה בשם המודול שמועבר לקריאה באותו התו מותמר לאות גדולה. במודול רגיל, אותה התמרה מתבצעת בשם הדף עצמו. בשימוש ב"ארגז חול לתבניות", האות הראשונה ב"שם המודול" היא בעצם אות שנמצאת באמצע השם (כלומר, במקום שם דף "אתגר" במרחב "יחידה", שם הדף הוא בעצם יחידה:אתגר, במרחב המשתמש) ולכן המערכת לא מתמירה אותה אוטומטית לאות גדולה. בגלל שההתמרה בקריאה למודול עדיין מתבצעת, באחריות המשתמשת לייצר את הדף בשם שנפתח באות גדולה. אם שם המודול הוא בעברית, בעיה זו לא קיימת. כשהמשתמשת מבקשת להציג דף כלשהו בוויקיפדיה או קוד ויקי שמוזן בקופסה המתאימה ב"ארגז חול לתבניות", הדף המוצג לא נלקח מזיכרון המטמון של השרת, אלא מחושב מחדש, כשעבור כל תבנית ומודול שנמצאים בשימוש, המערכת בודקת האם דף בשם המתאים נמצא תחת "תחילית לארגז חול". אם תבנית או מודול כאלו קיימים, המערכת תשתמש בהם. אם לא, היא תשתמש בתבנית או המודול שקיים במרחב התבניות או המודולים בשם זה. בדוגמה שלנו, "תחילית לארגז חול" היא "משתמשת:אלמונית/ארגז חול", ולכן כשהמערכת תיתקל ב {{משמאל לימין|<nowiki>{{#invoke:אתגר|....}}</nowiki>}}, המערכת תריץ את הקוד שנמצא בדף "משתמשת:אלמונית/ארגז חול/יחידה:אתגר". ==ראו גם== * [[ויקיפדיה:לואה/בדיקות]] * [[ויקיפדיה:לואה/בקשות למודולים]] * לרשימת היחידות ראו [[מיוחד:דפים המתחילים ב/יחידה:]] ==קישורים חיצוניים== * [[:mw:Lua scripting|Lua scripting]] [[קטגוריה:חב"דפדיה - תמיכה טכנית]] [[קטגוריה:תבניות|*]]
תקציר:
לתשומת ליבך: תרומתך לאתר חב"דפדיה תפורסם לפי תנאי הרישיון GNU Free Documentation License 1.2 (אפשר לעיין בדף
חב"דפדיה:זכויות יוצרים
לפרטים נוספים). אם אינך רוצה שעבודתך תהיה זמינה לעריכה על־ידי אחרים, שתופץ לעיני כול, ושאחרים יוכלו להעתיק ממנה תוך ציון המקור – אין לפרסם אותה פה.
כמו־כן, שמירת העריכה משמעה הבטחה שכתבת את הטקסט הזה בעצמך או העתקת אותו ממקור בנחלת הכלל (שאינו מוגבל בזכויות יוצרים) או מקור חופשי דומה.
אין לשלוח חומר מוגבל בזכויות יוצרים ללא רשות!
ביטול
עזרה בעריכה
(נפתח בחלון חדש)
תבנית המופיעה בדף זה:
תבנית:משמאל לימין
(
עריכה
)
תפריט ניווט
כלים אישיים
לא בחשבון
שיחה
תרומות
יצירת חשבון
כניסה לחשבון
מרחבי שם
דף מיזם
שיחה
עברית
צפיות
קריאה
עריכת קוד מקור
גרסאות קודמות
עוד
ניווט
עמוד ראשי
ברוכים הבאים
אולם דיונים
לוח מודעות
שינויים אחרונים
ערך אקראי
דיווח על טעות
עזרה
חב"דפדיה להורדה
צור קשר/תרומה
פורטלים
נשיאי חב"ד
ימי חב"ד
גאולה ומשיח
תורת החסידות
תורת הנגלה
ניגוני חב"ד
ספרות חב"ד
בית רבי
אישי חב"ד
הפצת המעיינות
קישורים
חב"ד אינפו
ארכיון גאולה ומשיח
כלים
דפים המקושרים לכאן
שינויים בדפים המקושרים
דפים מיוחדים
מידע על הדף