CINXE.COM

יחידה:ParamValidator – ויקיפדיה

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-not-available" lang="he" dir="rtl"> <head> <meta charset="UTF-8"> <title>יחידה:ParamValidator – ויקיפדיה</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-not-available";var cookie=document.cookie.match(/(?:^|; )hewikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat": "dmy","wgMonthNames":["","ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"wgRequestId":"90516080-4fd4-49b2-98a8-a874b1e6df16","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"יחידה:ParamValidator","wgTitle":"ParamValidator","wgCurRevisionId":39654616,"wgRevisionId":39654616,"wgArticleId":1362359,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["ניהול פרמטרים"],"wgPageViewLanguage":"he","wgPageContentLanguage":"he","wgPageContentModel":"Scribunto","wgRelevantPageName":"יחידה:ParamValidator","wgRelevantArticleId":1362359,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["templateeditor"],"wgRestrictionMove":["templateeditor"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true, "wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q69672331","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false,"wgSiteNoticeId":"2.254"};RLSTATE={"ext.gadget.ExternalLinkIcon":"ready", "ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready","ext.dismissableSiteNotice.styles":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.EditToolbar","ext.gadget.TemplateParamWizard","ext.gadget.Summarieslist","ext.gadget.refsToLeft","ext.gadget.Wdsearch","ext.gadget.catSexSelector","ext.gadget.feedback","ext.gadget.wikibugs","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.popups","ext.visualEditor.desktopArticleTarget.init", "ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking","ext.dismissableSiteNotice"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=he&amp;modules=ext.dismissableSiteNotice.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=he&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=he&amp;modules=ext.gadget.ExternalLinkIcon&amp;only=styles&amp;skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=he&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="יחידה:ParamValidator – ויקיפדיה"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//he.m.wikipedia.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="ויקיפדיה"> <link rel="EditURI" type="application/rsd+xml" href="//he.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://he.wikipedia.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.he"> <link rel="alternate" type="application/atom+xml" title="הזנת Atom של ויקיפדיה" href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%A9%D7%99%D7%A0%D7%95%D7%99%D7%99%D7%9D_%D7%90%D7%97%D7%A8%D7%95%D7%A0%D7%99%D7%9D&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki rtl sitedir-rtl mw-hide-empty-elt ns-828 ns-subject page-יחידה_ParamValidator rootpage-יחידה_ParamValidator skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">לדלג לתוכן</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="אתר"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="תפריט ראשי" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">תפריט ראשי</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">תפריט ראשי</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">העברה לסרגל הצד</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">הסתרה</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> ניווט </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage" class="mw-list-item"><a href="/wiki/%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99" title="ביקור בעמוד הראשי [z]" accesskey="z"><span>עמוד ראשי</span></a></li><li id="n-welcomepage" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%91%D7%A8%D7%95%D7%9B%D7%99%D7%9D_%D7%94%D7%91%D7%90%D7%99%D7%9D"><span>ברוכים הבאים</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%A9%D7%99%D7%A0%D7%95%D7%99%D7%99%D7%9D_%D7%90%D7%97%D7%A8%D7%95%D7%A0%D7%99%D7%9D" title="רשימת השינויים האחרונים באתר [r]" accesskey="r"><span>שינויים אחרונים</span></a></li><li id="n-featured-articles" class="mw-list-item"><a href="/wiki/%D7%A4%D7%95%D7%A8%D7%98%D7%9C:%D7%A2%D7%A8%D7%9B%D7%99%D7%9D_%D7%9E%D7%95%D7%9E%D7%9C%D7%A6%D7%99%D7%9D"><span>ערכים מומלצים</span></a></li><li id="n-portals" class="mw-list-item"><a href="/wiki/%D7%A4%D7%95%D7%A8%D7%98%D7%9C:%D7%A4%D7%95%D7%A8%D7%98%D7%9C%D7%99%D7%9D"><span>פורטלים</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%90%D7%A7%D7%A8%D7%90%D7%99" title="טעינת דף אקראי [x]" accesskey="x"><span>ערך אקראי</span></a></li> </ul> </div> </div> <div id="p-community" class="vector-menu mw-portlet mw-portlet-community" > <div class="vector-menu-heading"> קהילה </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%A9%D7%A2%D7%A8_%D7%94%D7%A7%D7%94%D7%99%D7%9C%D7%94" title="אודות המיזם, איך אפשר לעזור, איפה למצוא דברים"><span>שער הקהילה</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/%D7%A2%D7%96%D7%A8%D7%94:%D7%AA%D7%A4%D7%A8%D7%99%D7%98_%D7%A8%D7%90%D7%A9%D7%99" title="המקום למצוא מידע"><span>עזרה</span></a></li><li id="n-Ask-q" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%99%D7%99%D7%A2%D7%95%D7%A5" title="דפים להתייעצות טכנית, לשונית וכו&#039;"><span>ייעוץ</span></a></li><li id="n-village-pump" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%9E%D7%96%D7%A0%D7%95%D7%9F" title="דיוני מדיניות ודיונים כלליים על ויקיפדיה"><span>מזנון</span></a></li><li id="n-Town-square" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%9B%D7%99%D7%9B%D7%A8_%D7%94%D7%A2%D7%99%D7%A8" title="המקום בוויקיפדיה לשתף את הקהילה בדעותיכם בנושאים שאינם קשורים ישירות לוויקיפדיה"><span>כיכר העיר</span></a></li><li id="n-news" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%97%D7%93%D7%A9%D7%95%D7%AA" title="חדשות בנושאי ויקיפדיה שונים"><span>חדשות</span></a></li><li id="n-notice-board" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%9C%D7%95%D7%97_%D7%9E%D7%95%D7%93%D7%A2%D7%95%D7%AA" title="לוח מודעות להפניית הוויקיפדים לדיונים בדפי שיחה שלא זכו לתשומת לב מספקת"><span>לוח מודעות</span></a></li><li id="n-contactUs" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%99%D7%A6%D7%99%D7%A8%D7%AA_%D7%A7%D7%A9%D7%A8" title="איך ליצור קשר עם ויקיפדיה לצורך תיקונים, בירורים או שאלות אחרות"><span>יצירת קשר</span></a></li><li id="n-guestbook" class="mw-list-item"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%A1%D7%A4%D7%A8_%D7%90%D7%95%D7%A8%D7%97%D7%99%D7%9D" title="שתפו אותנו במשוב כללי על התרשמותכם מוויקיפדיה ומידת שביעות רצונכם ממנה"><span>ספר אורחים</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="ויקיפדיה" src="/static/images/mobile/copyright/wikipedia-wordmark-he.svg" style="width: 7.5em; height: 1.75em;"> <img class="mw-logo-tagline" alt="האנציקלופדיה החופשית" src="/static/images/mobile/copyright/wikipedia-tagline-he.svg" width="120" height="12" style="width: 7.5em; height: 0.75em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%97%D7%99%D7%A4%D7%95%D7%A9" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="‏חיפוש בוויקיפדיה‏ [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>חיפוש</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="חיפוש בוויקיפדיה" aria-label="חיפוש בוויקיפדיה" autocapitalize="sentences" title="‏חיפוש בוויקיפדיה‏ [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="מיוחד:חיפוש"> </div> <button class="cdx-button cdx-search-input__end-button">חיפוש</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="כלים אישיים"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="מראה"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="שינוי המראה של גודל הגופן, הרוחב והצבע של הדף" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="מראה" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">מראה</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_he.wikipedia.org&amp;uselang=he" class=""><span>תרומה לוויקיפדיה</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%94%D7%A8%D7%A9%D7%9E%D7%94_%D7%9C%D7%97%D7%A9%D7%91%D7%95%D7%9F&amp;returnto=%D7%99%D7%97%D7%99%D7%93%D7%94%3AParamValidator" title="מומלץ ליצור חשבון ולהיכנס אליו, אך אין חובה לעשות זאת" class=""><span>יצירת חשבון</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%9B%D7%A0%D7%99%D7%A1%D7%94_%D7%9C%D7%97%D7%A9%D7%91%D7%95%D7%9F&amp;returnto=%D7%99%D7%97%D7%99%D7%93%D7%94%3AParamValidator" title="מומלץ להיכנס לחשבון, אך אין חובה לעשות זאת [o]" accesskey="o" class=""><span>כניסה לחשבון</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="אפשרויות נוספות" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="כלים אישיים" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">כלים אישיים</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="תפריט משתמש" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_he.wikipedia.org&amp;uselang=he"><span>תרומה לוויקיפדיה</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%94%D7%A8%D7%A9%D7%9E%D7%94_%D7%9C%D7%97%D7%A9%D7%91%D7%95%D7%9F&amp;returnto=%D7%99%D7%97%D7%99%D7%93%D7%94%3AParamValidator" title="מומלץ ליצור חשבון ולהיכנס אליו, אך אין חובה לעשות זאת"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>יצירת חשבון</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%9B%D7%A0%D7%99%D7%A1%D7%94_%D7%9C%D7%97%D7%A9%D7%91%D7%95%D7%9F&amp;returnto=%D7%99%D7%97%D7%99%D7%93%D7%94%3AParamValidator" title="מומלץ להיכנס לחשבון, אך אין חובה לעשות זאת [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>כניסה לחשבון</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> דפים לעורכים שלא נכנסו לחשבון <a href="/wiki/%D7%A2%D7%96%D7%A8%D7%94:%D7%91%D7%A8%D7%95%D7%9B%D7%99%D7%9D_%D7%94%D7%91%D7%90%D7%99%D7%9D" aria-label="מידע נוסף על עריכה"><span>מידע נוסף</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%94%D7%AA%D7%A8%D7%95%D7%9E%D7%95%D7%AA_%D7%A9%D7%9C%D7%99" title="רשימת העריכות שנעשו מכתובת IP זו [y]" accesskey="y"><span>תרומות</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%94%D7%A9%D7%99%D7%97%D7%94_%D7%A9%D7%9C%D7%99" title="דיון על העריכות שנעשו מכתובת IP זו [n]" accesskey="n"><span>שיחה</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><div id="mw-dismissablenotice-anonplace"></div><script>(function(){var node=document.getElementById("mw-dismissablenotice-anonplace");if(node){node.outerHTML="\u003Cdiv class=\"mw-dismissable-notice\"\u003E\u003Cdiv class=\"mw-dismissable-notice-close\"\u003E[\u003Ca tabindex=\"0\" role=\"button\"\u003Eהסתרה\u003C/a\u003E]\u003C/div\u003E\u003Cdiv class=\"mw-dismissable-notice-body\"\u003E\u003C!-- CentralNotice --\u003E\u003Cdiv id=\"localNotice\" data-nosnippet=\"\"\u003E\u003Cdiv class=\"anonnotice\" lang=\"he\" dir=\"rtl\"\u003E\u003Cp\u003E\u003Cb\u003Eתמיד רציתם לכתוב בוויקיפדיה אבל לא ידעתם איך? אתם מוזמנים לסדנת עריכה בוויקיפדיה. הסדנה תתקיים בספרייה הלאומית (בבניינה החדש) בירושלים ביום שישי, 06.12.24, בשעה 09:00. להרשמה לחצו \u003Ca href=\"/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%9E%D7%99%D7%96%D7%9E%D7%99_%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94/%D7%92%D7%9C%D7%90%D7%9D/%D7%94%D7%A1%D7%A4%D7%A8%D7%99%D7%99%D7%94_%D7%94%D7%9C%D7%90%D7%95%D7%9E%D7%99%D7%AA/%D7%90%D7%99%D7%A8%D7%95%D7%A2%D7%99%D7%9D/%D7%A1%D7%93%D7%A0%D7%AA_%D7%A2%D7%A8%D7%99%D7%9B%D7%94_%D7%93%D7%A6%D7%9E%D7%91%D7%A8_2024\" title=\"ויקיפדיה:מיזמי ויקיפדיה/גלאם/הספרייה הלאומית/אירועים/סדנת עריכה דצמבר 2024\"\u003Eכאן\u003C/a\u003E.\u003C/b\u003E\n\u003C/p\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E";}}());</script></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="אתר"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">יחידה</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">ParamValidator</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="מעבר לערך בשפה אחרת. זמין ב־28 שפות" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-28" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">28 שפות</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Module:Parameter_validation" title="Module:Parameter validation – אנגלית" lang="en" hreflang="en" data-title="Module:Parameter validation" data-language-autonym="English" data-language-local-name="אנגלית" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:Parameter_validation" title="وحدة:Parameter validation – ערבית" lang="ar" hreflang="ar" data-title="وحدة:Parameter validation" data-language-autonym="العربية" data-language-local-name="ערבית" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ary mw-list-item"><a href="https://ary.wikipedia.org/wiki/%D9%85%D9%88%D8%AF%D9%88%D9%84:Parameter_validation" title="مودول:Parameter validation – מרוקאית" lang="ary" hreflang="ary" data-title="مودول:Parameter validation" data-language-autonym="الدارجة" data-language-local-name="מרוקאית" class="interlanguage-link-target"><span>الدارجة</span></a></li><li class="interlanguage-link interwiki-ban mw-list-item"><a href="https://ban.wikipedia.org/wiki/Modul:Parameter_validation" title="Modul:Parameter validation – באלינזית" lang="ban" hreflang="ban" data-title="Modul:Parameter validation" data-language-autonym="Basa Bali" data-language-local-name="באלינזית" class="interlanguage-link-target"><span>Basa Bali</span></a></li><li class="interlanguage-link interwiki-bh mw-list-item"><a href="https://bh.wikipedia.org/wiki/Module:Parameter_validation" title="Module:Parameter validation – בהוג׳פורית" lang="bh" hreflang="bh" data-title="Module:Parameter validation" data-language-autonym="भोजपुरी" data-language-local-name="בהוג׳פורית" class="interlanguage-link-target"><span>भोजपुरी</span></a></li><li class="interlanguage-link interwiki-cdo mw-list-item"><a href="https://cdo.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Parameter_validation" title="模組:Parameter validation – מינדונגית" lang="cdo" hreflang="cdo" data-title="模組:Parameter validation" data-language-autonym="閩東語 / Mìng-dĕ̤ng-ngṳ̄" data-language-local-name="מינדונגית" class="interlanguage-link-target"><span>閩東語 / Mìng-dĕ̤ng-ngṳ̄</span></a></li><li class="interlanguage-link interwiki-dv mw-list-item"><a href="https://dv.wikipedia.org/wiki/%DE%89%DE%AE%DE%91%DE%A8%DE%87%DE%AA%DE%8D%DE%B0:Parameter_validation" title="މޮޑިއުލް:Parameter validation – דיבהי" lang="dv" hreflang="dv" data-title="މޮޑިއުލް:Parameter validation" data-language-autonym="ދިވެހިބަސް" data-language-local-name="דיבהי" class="interlanguage-link-target"><span>ދިވެހިބަސް</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Parameter_validation" title="پودمان:Parameter validation – פרסית" lang="fa" hreflang="fa" data-title="پودمان:Parameter validation" data-language-autonym="فارسی" data-language-local-name="פרסית" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-gu mw-list-item"><a href="https://gu.wikipedia.org/wiki/%E0%AA%B5%E0%AA%BF%E0%AA%AD%E0%AA%BE%E0%AA%97:Parameter_validation" title="વિભાગ:Parameter validation – גוג׳ארטי" lang="gu" hreflang="gu" data-title="વિભાગ:Parameter validation" data-language-autonym="ગુજરાતી" data-language-local-name="גוג׳ארטי" class="interlanguage-link-target"><span>ગુજરાતી</span></a></li><li class="interlanguage-link interwiki-hak mw-list-item"><a href="https://hak.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Parameter_validation" title="模組:Parameter validation – סינית האקה" lang="hak" hreflang="hak" data-title="模組:Parameter validation" data-language-autonym="客家語 / Hak-kâ-ngî" data-language-local-name="סינית האקה" class="interlanguage-link-target"><span>客家語 / Hak-kâ-ngî</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Modul:Parameter_validation" title="Modul:Parameter validation – אינדונזית" lang="id" hreflang="id" data-title="Modul:Parameter validation" data-language-autonym="Bahasa Indonesia" data-language-local-name="אינדונזית" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-mai mw-list-item"><a href="https://mai.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:Parameter_validation" title="मोड्युल:Parameter validation – מאיטילית" lang="mai" hreflang="mai" data-title="मोड्युल:Parameter validation" data-language-autonym="मैथिली" data-language-local-name="מאיטילית" class="interlanguage-link-target"><span>मैथिली</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Modul:Parameter_validation" title="Modul:Parameter validation – מלאית" lang="ms" hreflang="ms" data-title="Modul:Parameter validation" data-language-autonym="Bahasa Melayu" data-language-local-name="מלאית" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-ne mw-list-item"><a href="https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%8B%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%81%E0%A4%B2:Parameter_validation" title="मोड्युल:Parameter validation – נפאלית" lang="ne" hreflang="ne" data-title="मोड्युल:Parameter validation" data-language-autonym="नेपाली" data-language-local-name="נפאלית" class="interlanguage-link-target"><span>नेपाली</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%AE%E0%A9%8C%E0%A8%A1%E0%A8%BF%E0%A8%8A%E0%A8%B2:Parameter_validation" title="ਮੌਡਿਊਲ:Parameter validation – פנג׳אבי" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:Parameter validation" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="פנג׳אבי" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-sat mw-list-item"><a href="https://sat.wikipedia.org/wiki/%E1%B1%A2%E1%B1%B3%E1%B1%B0%E1%B1%A9%E1%B1%9E:Parameter_validation" title="ᱢᱳᱰᱩᱞ:Parameter validation – סנטלית" lang="sat" hreflang="sat" data-title="ᱢᱳᱰᱩᱞ:Parameter validation" data-language-autonym="ᱥᱟᱱᱛᱟᱲᱤ" data-language-local-name="סנטלית" class="interlanguage-link-target"><span>ᱥᱟᱱᱛᱟᱲᱤ</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D9%85%D8%A7%DA%8A%D9%8A%D9%88%D9%84:Parameter_validation" title="ماڊيول:Parameter validation – סינדהית" lang="sd" hreflang="sd" data-title="ماڊيول:Parameter validation" data-language-autonym="سنڌي" data-language-local-name="סינדהית" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-shn mw-list-item"><a href="https://shn.wikipedia.org/wiki/%E1%80%99%E1%80%B1%E1%82%83%E1%82%87%E1%81%B5%E1%80%BB%E1%80%B0%E1%80%B8:Parameter_validation" title="မေႃႇၵျူး:Parameter validation – שאן" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:Parameter validation" data-language-autonym="ၽႃႇသႃႇတႆး " data-language-local-name="שאן" class="interlanguage-link-target"><span>ၽႃႇသႃႇတႆး </span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/Module:Parameter_validation" title="Module:Parameter validation – סינהלה" lang="si" hreflang="si" data-title="Module:Parameter validation" data-language-autonym="සිංහල" data-language-local-name="סינהלה" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Module:Parameter_validation" title="Module:Parameter validation – אנגלית פשוטה" lang="en-simple" hreflang="en-simple" data-title="Module:Parameter validation" data-language-autonym="Simple English" data-language-local-name="אנגלית פשוטה" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Modul:Parameter_validation" title="Modul:Parameter validation – סלובנית" lang="sl" hreflang="sl" data-title="Modul:Parameter validation" data-language-autonym="Slovenščina" data-language-local-name="סלובנית" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A1%E0%B8%AD%E0%B8%94%E0%B8%B9%E0%B8%A5:Parameter_validation" title="มอดูล:Parameter validation – תאית" lang="th" hreflang="th" data-title="มอดูล:Parameter validation" data-language-autonym="ไทย" data-language-local-name="תאית" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tl mw-list-item"><a href="https://tl.wikipedia.org/wiki/Module:Parameter_validation" title="Module:Parameter validation – טאגאלוג" lang="tl" hreflang="tl" data-title="Module:Parameter validation" data-language-autonym="Tagalog" data-language-local-name="טאגאלוג" class="interlanguage-link-target"><span>Tagalog</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Mod%C3%BCl:Parameter_validation" title="Modül:Parameter validation – טורקית" lang="tr" hreflang="tr" data-title="Modül:Parameter validation" data-language-autonym="Türkçe" data-language-local-name="טורקית" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:Parameter_validation" title="ماڈیول:Parameter validation – אורדו" lang="ur" hreflang="ur" data-title="ماڈیول:Parameter validation" data-language-autonym="اردو" data-language-local-name="אורדו" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-yi mw-list-item"><a href="https://yi.wikipedia.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" title="יחידה:ParamValidator – יידיש" lang="yi" hreflang="yi" data-title="יחידה:ParamValidator" data-language-autonym="ייִדיש" data-language-local-name="יידיש" class="interlanguage-link-target"><span>ייִדיש</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Module:Parameter_validation" title="Module:Parameter validation – סינית" lang="zh" hreflang="zh" data-title="Module:Parameter validation" data-language-autonym="中文" data-language-local-name="סינית" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/%E6%A8%A1%E7%B5%84:Parameter_validation" title="模組:Parameter validation – מין נאנית" lang="nan" hreflang="nan" data-title="模組:Parameter validation" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="מין נאנית" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q69672331#sitelinks-wikipedia" title="עריכת קישורים בין־לשוניים" class="wbc-editpage">עריכת הקישורים</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="מרחבי שם"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" title="צפייה בדף היחידה [c]" accesskey="c"><span>יחידה</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/%D7%A9%D7%99%D7%97%D7%AA_%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" rel="discussion" title="שיחה על דף התוכן [t]" accesskey="t"><span>שיחה</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="שינוי הגוון השפה" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="צפיות"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator"><span>קריאה</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;action=edit" title="דף זה מוגן.&#10;באפשרותך לצפות בקוד המקור שלו [e]" accesskey="e"><span>הצגת מקור</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;action=history" title="גרסאות קודמות של דף זה [h]" accesskey="h"><span>גרסאות קודמות</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="כלי דף"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="כלים" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">כלים</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">כלים</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">העברה לסרגל הצד</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">הסתרה</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="אפשרויות נוספות" > <div class="vector-menu-heading"> פעולות </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator"><span>קריאה</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;action=edit"><span>הצגת מקור</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;action=history"><span>גרסאות קודמות</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> כללי </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%93%D7%A4%D7%99%D7%9D_%D7%94%D7%9E%D7%A7%D7%95%D7%A9%D7%A8%D7%99%D7%9D_%D7%9C%D7%9B%D7%90%D7%9F/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" title="רשימה של כל דפי הוויקי שמקשרים לדף הזה [j]" accesskey="j"><span>דפים המקושרים לכאן</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%A9%D7%99%D7%A0%D7%95%D7%99%D7%99%D7%9D_%D7%91%D7%93%D7%A4%D7%99%D7%9D_%D7%94%D7%9E%D7%A7%D7%95%D7%A9%D7%A8%D7%99%D7%9D/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" rel="nofollow" title="השינויים האחרונים בדפים המקושרים מהדף הזה [k]" accesskey="k"><span>שינויים בדפים המקושרים</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%93%D7%A4%D7%99%D7%9D_%D7%9E%D7%99%D7%95%D7%97%D7%93%D7%99%D7%9D" title="רשימה של כל הדפים המיוחדים [q]" accesskey="q"><span>דפים מיוחדים</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;oldid=39654616" title="קישור קבוע לגרסה הזאת של הדף הזה"><span>קישור קבוע</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;action=info" title="מידע נוסף על הדף הזה"><span>מידע על הדף</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:%D7%9E%D7%A7%D7%A6%D7%A8_%D7%9B%D7%AA%D7%95%D7%91%D7%95%D7%AA&amp;url=https%3A%2F%2Fhe.wikipedia.org%2Fwiki%2F%25D7%2599%25D7%2597%25D7%2599%25D7%2593%25D7%2594%3AParamValidator"><span>קבלת כתובת מקוצרת</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:QrCode&amp;url=https%3A%2F%2Fhe.wikipedia.org%2Fwiki%2F%25D7%2599%25D7%2597%25D7%2599%25D7%2593%25D7%2594%3AParamValidator"><span>הורדת קוד QR</span></a></li> </ul> </div> </div> <div id="p-electronpdfservice-sidebar-portlet-heading" class="vector-menu mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading" > <div class="vector-menu-heading"> הדפסה/יצוא </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="electron-print_pdf" class="mw-list-item"><a href="/w/index.php?title=%D7%9E%D7%99%D7%95%D7%97%D7%93:DownloadAsPdf&amp;page=%D7%99%D7%97%D7%99%D7%93%D7%94%3AParamValidator&amp;action=show-download-screen"><span>הורדה כ־PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="גרסה להדפסה של הדף הזה [p]" accesskey="p"><span>גרסה להדפסה</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> במיזמים אחרים </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-wikisource mw-list-item"><a href="https://he.wikisource.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" hreflang="he"><span>ויקיטקסט</span></a></li><li class="wb-otherproject-link wb-otherproject-wikivoyage mw-list-item"><a href="https://he.wikivoyage.org/wiki/%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator" hreflang="he"><span>ויקימסע</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q69672331" title="קישור לפריט המשויך במאגר הנתונים [g]" accesskey="g"><span>פריט ויקינתונים</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="כלי דף"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="מראה"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">מראה</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">העברה לסרגל הצד</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">הסתרה</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">מתוך ויקיפדיה, האנציקלופדיה החופשית</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-rtl mw-parser-output" lang="he" dir="rtl"><div class="mw-content-ltr"> <p>This module is based on idea and original code of <a href="/wiki/%D7%9E%D7%A9%D7%AA%D7%9E%D7%A9:IKhitron" title="משתמש:IKhitron">User:IKhitron</a>. <br /> the source of this module is in //he.wikipedia.org/wiki/Module:ParamValidator </p><p>This module exports two functions: calculateViolations( frame, subpages ), and validateParams( frame ). </p><p>calculateViolations( frame, subpages ) finds templatedata, in template page or in one of its subpages in the list, if provided. it returns a table with the violations. if there are none, the table is empty. otherwise it has the structure </p> <pre>{ violation1 = { param1 = value1, param2 = value2 }, violation2 = { ... }, ... } </pre> <p>violation1, violation2 etc. are one of the names of specific violations, as described below. param1, param2 etc. are either the names of parameter passed to the template, or defined in templatedata. value1, value2 etc. are the values passed to the template, or an empty string if no such parameter was passed. </p><p>the different violations are as follow: </p> <ul><li><b>no-templatedata</b><br />no valid tempaltedata was found in tempalte page, or documentation subpage</li> <li><b>undeclared</b><br />named parameters with non-empty value, does not exist in templatedata</li> <li><b>empty-undeclared</b><br />named parameters with empty value, does not exist in templatedata</li> <li><b>undeclared-numeric</b><br />numeric parameters with non-empty value, does not exist in templatedata</li> <li><b>empty-undeclared-numeric</b><br />numeric parameters with empty value, does not exist in templatedata</li> <li><b>deprecated</b><br />parameters with non-empty value, marked as "deprecated" in tempaltedata</li> <li><b>empty-deprecated</b><br />parameters with empty value, marked as "deprecated" in tempaltedata</li> <li><b>empty-required</b><br />missing or empty parameter marked as "required" in tempaltedata</li> <li><b>incompatible</b><br />a non-empty parameter passed to the template, incompatible with the parameter type defined in templatedata</li></ul> <p><br /> The second function, validateParams( frame ), can be called from the tempalte' using #invoke. it expects a parameter named "options", which contains the definition of the output. typically, it's used by placing something like so: </p> <pre>&lt;includeonly&gt;{{#invoke:ParamValidator | validateParams | options = {{PV default options}} }}&lt;/includeonly&gt; </pre> <p>at the top of the template (be mindful not to add extra spaces and newlines to the template). </p><p>the options parameter should be a JSON-encoded string, defining the output, and some special behaviors. the example above assumes that a wiki page named <b><code>Template:PV default options</code></b> exists, and contains valid JSON string. for each of the violations defined above, "options" may define an output string, so basically, "options" looks like so: </p> <pre>{ violation1: outputstring1, violation2: outputstring2, .... , behavior1: some value, .... } </pre> <p>not all violations have to be defined. a violation not defined in "options" will be ignored. </p><p>when invoked, it extract "subpages" from the options parameter, and calls: </p> <ul><li>calculateViolations( frame, subpages )</li></ul> <p>if the returned table is empty, no violation were found, and an empty string is returned and nothing else happens. </p><p>otherwise, for each of the violations, i.e., the keys of the returned table, when "options" contains this key, the corresonding value is appended to the output. </p><p>some further processing is done: </p> <ol><li>several tokens are replaced with calculated values. these are described below.</li> <li>some "meta" violations are calculated: when any none-ignored violation occured, the "any" meta-violation is added to the output in the same way, i.e. the string keyed by "any" in the options is appended to output with appropriate substitutions. similarly, "multiple" meta-violation is created when more than one type of non-ignored violations occured.</li> <li>if the output is not empty, a prefix and suffix strings are prepended and appended to it.</li></ol> <p>these are the tokens and the replacement. </p> <ul><li><b>templatename</b><br />full template name, including namespace.</li> <li><b>tname_naked</b><br />template name without namespace.</li> <li><b>paramname</b><br />comma-separated list of parameters</li> <li><b>paramandvalue</b><br />is replaced by comma-separated list of "name: value" pairs of parameters and values</li></ul> <p>the first two are applied to the whole output, including the suffux and prefix, and the rest are applied to the individual violations, each with its own list of offending parameters and values. </p><p><br /> the rest of the if the value of some keys is null, this error condition will be ignored, and not counted when calculating "any" and "multiple" conditions. </p><p>some other optional fields can be passed via options: </p> <ul><li><b>doc-subpage</b><br />can be either a string, or a list (in square bracktes) of strings, indicating subpages of the template that may contain templatedata.</li> <li><b>ignore</b><br />list of patterns. any parameter whose name matches any pattern, will not considered in violation of any of the rules.</li> <li><b>skip-empty-numeric</b><br />if a quoted number, the module will ignore non-declared empty numeric parameters up to this number</li> <li><b>wrapper-prefix</b><br />openning wrapper element of outpot (defaults to <code>&lt;div class = 'paramvalidator-wrapper'&gt;</code>)</li> <li><b>wrapper-suffix</b><br />closing wrapper element of output (defaults to "&lt;/div&gt;")</li></ul> <p>additional option parameters, named options1, options2, etc. can be passed. any entry defined in these options will override the previous value. a typical use may be like so: </p><p><br /> typically, this JSON structure will be placed in a separate template, and retrieved for the module-use as shown above. </p> <pre>&lt;includeonly&gt;{{#invoke:ParamValidator | validateParams | options = {{PV default options}} | options1 = {"key":"value"} }}&lt;/includeonly&gt; </pre> <p>"key" can override any of the options fields described above. </p> </div> <hr /><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="cm">--[=[</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a><span class="cm">This module is based on idea and original code of [[User:IKhitron]].</span> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="cm">the source of this module is in //he.wikipedia.org/wiki/Module:ParamValidator</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="cm">main purpose: use &quot;templatedata&quot; to verify the parameters passed to a template</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="cm">Terminology: &quot;numeric parameter&quot; means order-based parameter. e.g. if the template is transcluded like so {{x | k | | a = m | b = }}</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a><span class="cm">&quot;a&quot; and &quot;b&quot; are &quot;named&quot; parameters, and there are 2 &quot;numeric&quot;, or order based parameters, 1 and 2. </span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a><span class="cm">we say that the value of a is &quot;m&quot;, the value of 1 is &quot;k&quot;, and &quot;b&quot; and 2 are &quot;empty&quot;.</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a><span class="cm">This module exports two functions: calculateViolations( frame, subpages ), and validateParams( frame ). </span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a><span class="cm">calculateViolations( frame, subpages ) finds templatedata, in template page or in one of its subpages in the list, if provided.</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="cm">it returns a table with the violations. if there are none, the table is empty. otherwise it has the structure</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a><span class="cm">{</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a><span class="cm"> violation1 = { param1 = value1, param2 = value2 },</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a><span class="cm"> violation2 = { ... },</span> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a><span class="cm"> ...</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a><span class="cm">}</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a><span class="cm">violation1, violation2 etc. are one of the names of specific violations, as described below. </span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a><span class="cm">param1, param2 etc. are either the names of parameter passed to the template, or defined in templatedata.</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a><span class="cm">value1, value2 etc. are the values passed to the template, or an empty string if no such parameter was passed.</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a><span class="cm">the different violations are as follow:</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a><span class="cm"> * &quot;no-templatedata&quot;: no valid tempaltedata was found in tempalte page, or documentation subpage</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a><span class="cm"> * &quot;undeclared&quot;: named parameters with non-empty value, does not exist in templatedata</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a><span class="cm"> * &quot;empty-undeclared&quot;: named parameters with empty value, does not exist in templatedata</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a><span class="cm"> * &quot;undeclared-numeric&quot;: numeric parameters with non-empty value, does not exist in templatedata</span> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a><span class="cm"> * &quot;empty-undeclared-numeric&quot;: numeric parameters with empty value, does not exist in templatedata</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="cm"> * &quot;deprecated&quot;: parameters with non-empty value, marked as &quot;deprecated&quot; in tempaltedata</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="cm"> * &quot;empty-deprecated&quot;: parameters with empty value, marked as &quot;deprecated&quot; in tempaltedata</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="cm"> * &quot;empty-required&quot;: missing or empty parameter marked as &quot;required&quot; in tempaltedata</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a><span class="cm"> * &quot;incompatible&quot;: a non-empty parameter passed to the template, incompatible with the parameter type defined in templatedata </span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="cm"> * &quot;duplicate&quot;: a value is passed for the same parameter (or any of its aliases) more than once</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a><span class="cm">The second function, validateParams( frame ), can be called from the tempalte&#39; using #invoke.</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a><span class="cm">it expects a parameter named &quot;options&quot;, which contains the definition of the output. typically, it&#39;s used by placing something like so:</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a><span class="cm">&lt;includeonly&gt;{{#invoke:ParamValidator | validateParams | options = {{PV default options}} }}&lt;/includeonly&gt;</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a><span class="cm">at the top of the template (be mindful not to add extra spaces and newlines to the template).</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a><span class="cm">to bypass some mediawiki limitation, it is also possible to pass the options as &quot;module&quot;, like so (use one of the two, but not both):</span> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a><span class="cm">&lt;includeonly&gt;{{#invoke:ParamValidator | validateParams | module_options = Module:PV default options}} }}&lt;/includeonly&gt;</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a><span class="cm">the first form expects a template named &quot;Template:PV default options&quot; which contains the options, and the 2nd form expects a module, </span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a><span class="cm">suitable for mw.loadData(), which returns a map of namespace =&gt; options (i.e. { [0] = &lt;options&gt;, [2] =&gt; &lt;options&gt; } .... )</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a><span class="cm">the options parameter should be a JSON-encoded string, defining the output, and some special behaviors. </span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a><span class="cm">the example above assumes that a wiki page named [[Template:PV default options]] exists, and contains valid JSON string. </span> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a><span class="cm">for each of the violations defined above, &quot;options&quot; may define an output string, so basically, &quot;options&quot; looks like so:</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a><span class="cm">{</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a><span class="cm"> violation1: outputstring1,</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a><span class="cm"> violation2: outputstring2,</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a><span class="cm"> .... ,</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a><span class="cm"> behavior1: some value,</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a><span class="cm"> ....</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a><span class="cm">}</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a><span class="cm">not all violations have to be defined. a violation not defined in &quot;options&quot; will be ignored.</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a><span class="cm">when invoked, it extract &quot;subpages&quot; from the options parameter, and calls:</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a><span class="cm"> calculateViolations( frame, subpages )</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a><span class="cm">if the returned table is empty, no violation were found, and an empty string is returned and nothing else happens.</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a><span class="cm">otherwise, for each of the violations, i.e., the keys of the returned table, when &quot;options&quot; contains this key,</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a><span class="cm">the corresonding value is appended to the output.</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a><span class="cm">some further processing is done:</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a><span class="cm">1) several tokens are replaced with calculated values. these are described below.</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a><span class="cm">2) some &quot;meta&quot; violations are calculated: when any none-ignored violation occured, </span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a><span class="cm"> the &quot;any&quot; meta-violation is added to the output in the same way, </span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a><span class="cm"> i.e. the string keyed by &quot;any&quot; in the options is appended to output with appropriate substitutions.</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a><span class="cm"> similarly, &quot;multiple&quot; meta-violation is created when more than one type of non-ignored violations occured.</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a><span class="cm">3) if the output is not empty, a prefix and suffix strings are prepended and appended to it. </span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a><span class="cm">these are the tokens and the replacement. </span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a><span class="cm"> * &quot;templatename&quot;: full template name, including namespace.</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a><span class="cm"> * &quot;tname_naked&quot;: template name without namespace.</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a><span class="cm"> * &quot;paramname&quot;: comma-separated list of parameters</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a><span class="cm"> * &quot;paramandvalue&quot;: is replaced by comma-separated list of &quot;name: value&quot; pairs of parameters and values</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a><span class="cm">the first two are applied to the whole output, including the suffux and prefix,</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a><span class="cm">and the rest are applied to the individual violations, each with its own list of offending parameters and values.</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a><span class="cm">the rest of the if the value of some keys is null, this error condition will be ignored, and not counted when calculating &quot;any&quot; and &quot;multiple&quot; conditions.</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a><span class="cm">some other optional fields can be passed via options:</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a><span class="cm"> * &quot;doc-subpage&quot;: can be either a string, or a list (in square bracktes) of strings, indicating subpages of the template </span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a><span class="cm"> that may contain templatedata. </span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a><span class="cm"> * &quot;ignore&quot;: list of patterns. any parameter whose name matches any pattern, will not considered in violation of any of the rules.</span> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a><span class="cm"> * &quot;skip-empty-numeric&quot;: if a quoted number, the module will ignore non-declared empty numeric parameters up to this number</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a><span class="cm"> * &quot;wrapper-prefix&quot;: openning wrapper element of outpot (defaults to &quot;&lt;div class = &#39;paramvalidator-wrapper&#39;&gt;&quot;) </span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a><span class="cm"> * &quot;wrapper-suffix&quot;: closing wrapper element of output (defaults to &quot;&lt;/div&gt;&quot;) </span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a><span class="cm">additional option parameters, named options1, options2, etc. can be passed. any entry defined in these options will </span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a><span class="cm">override the previous value. a typical use may be like so:</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a><span class="cm"> </span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a><span class="cm">typically, this JSON structure will be placed in a separate template, and retrieved for the module-use as shown above.</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a><span class="cm">&lt;includeonly&gt;{{#invoke:ParamValidator | validateParams | options = {{PV default options}} | options1 = {&quot;key&quot;:&quot;value&quot;} }}&lt;/includeonly&gt;</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a><span class="cm">&quot;key&quot; can override any of the options fields described above.</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a><span class="cm">]=]</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a><span class="kd">local</span> <span class="n">util</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="n">empty</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="kr">return</span> <span class="n">s</span> <span class="o">==</span> <span class="kc">nil</span> <span class="ow">or</span> <span class="nb">type</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="ow">and</span> <span class="p">(</span><span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">trim</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="ow">or</span> <span class="n">s</span> <span class="o">==</span> <span class="s1">&#39;-&#39;</span><span class="p">)</span> <span class="c1">-- compatible with module:תבנית מידע </span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="kr">end</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="p">,</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> <span class="n">extract_options</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">frame</span><span class="p">,</span> <span class="n">optionsPrefix</span> <span class="p">)</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="n">optionsPrefix</span> <span class="o">=</span> <span class="n">optionsPrefix</span> <span class="ow">or</span> <span class="s1">&#39;options&#39;</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> <span class="kd">local</span> <span class="n">options</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">more</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="kr">if</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;module_options&#39;</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="kd">local</span> <span class="n">module_options</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">loadData</span><span class="p">(</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;module_options&#39;</span><span class="p">]</span> <span class="p">)</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span> <span class="n">module_options</span> <span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> <span class="kr">return</span> <span class="p">{}</span> <span class="kr">end</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">getCurrentTitle</span><span class="p">()</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="kd">local</span> <span class="n">local_ptions</span> <span class="o">=</span> <span class="n">module_options</span><span class="p">[</span> <span class="n">title</span><span class="p">.</span><span class="n">namespace</span> <span class="p">]</span> <span class="ow">or</span> <span class="n">module_options</span><span class="p">[</span> <span class="n">title</span><span class="p">.</span><span class="n">nsText</span> <span class="p">]</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="kr">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">local_ptions</span> <span class="p">)</span> <span class="kr">do</span> <span class="n">options</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> <span class="kr">end</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="kr">end</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> <span class="kr">repeat</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="n">ok</span><span class="p">,</span> <span class="n">more</span> <span class="o">=</span> <span class="nb">pcall</span><span class="p">(</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">jsonDecode</span><span class="p">,</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="n">optionsPrefix</span> <span class="o">..</span> <span class="p">(</span> <span class="n">n</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> <span class="p">)]</span> <span class="p">)</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="kr">if</span> <span class="n">ok</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span> <span class="n">more</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> <span class="kr">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">more</span> <span class="p">)</span> <span class="kr">do</span> <span class="n">options</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> <span class="kr">end</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> <span class="kr">end</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> <span class="n">n</span> <span class="o">=</span> <span class="p">(</span> <span class="n">n</span> <span class="ow">or</span> <span class="mi">0</span> <span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a> <span class="kr">until</span> <span class="ow">not</span> <span class="n">ok</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> <span class="kr">return</span> <span class="n">options</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a> <span class="kr">end</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span class="p">,</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="n">build_namelist</span> <span class="o">=</span> <span class="kr">function</span> <span class="p">(</span> <span class="n">template_name</span><span class="p">,</span> <span class="n">sp</span> <span class="p">)</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> <span class="kd">local</span> <span class="n">res</span> <span class="o">=</span> <span class="p">{</span> <span class="n">template_name</span> <span class="p">}</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a> <span class="kr">if</span> <span class="n">sp</span> <span class="kr">then</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span> <span class="n">sp</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> <span class="n">sp</span> <span class="o">=</span> <span class="p">{</span> <span class="n">sp</span> <span class="p">}</span> <span class="kr">end</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">p</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">sp</span> <span class="p">)</span> <span class="kr">do</span> <span class="nb">table.insert</span><span class="p">(</span> <span class="n">res</span><span class="p">,</span> <span class="n">template_name</span> <span class="o">..</span> <span class="s1">&#39;/&#39;</span> <span class="o">..</span> <span class="n">p</span> <span class="p">)</span> <span class="kr">end</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="kr">end</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="kr">return</span> <span class="n">res</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a> <span class="kr">end</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="p">,</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> <span class="n">table_empty</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">t</span> <span class="p">)</span> <span class="c1">-- normally, test if next(t) is nil, but for some perverse reason, non-empty tables returned by loadData return nil...</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span> <span class="n">t</span> <span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;table&#39;</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> <span class="kr">end</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="kr">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">t</span> <span class="p">)</span> <span class="kr">do</span> <span class="kr">return</span> <span class="kc">false</span> <span class="kr">end</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> <span class="kr">return</span> <span class="kc">true</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kr">end</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="p">,</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a><span class="p">}</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">_readTemplateData</span><span class="p">(</span> <span class="n">templateName</span> <span class="p">)</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="kd">local</span> <span class="n">title</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">makeTitle</span><span class="p">(</span> <span class="mi">0</span><span class="p">,</span> <span class="n">templateName</span> <span class="p">)</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="kd">local</span> <span class="n">templateContent</span> <span class="o">=</span> <span class="n">title</span> <span class="ow">and</span> <span class="n">title</span><span class="p">.</span><span class="n">exists</span> <span class="ow">and</span> <span class="n">title</span><span class="p">:</span><span class="n">getContent</span><span class="p">()</span> <span class="c1">-- template&#39;s raw content</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kd">local</span> <span class="n">capture</span> <span class="o">=</span> <span class="n">templateContent</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span> <span class="n">templateContent</span><span class="p">,</span> <span class="s1">&#39;&lt;templatedata%s*&gt;(.*)&lt;/templatedata%s*&gt;&#39;</span> <span class="p">)</span> <span class="c1">-- templatedata as text</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a><span class="c1">-- capture = capture and mw.ustring.gsub( capture, &#39;&quot;(%d+)&quot;&#39;, tonumber ) -- convert &quot;1&quot;: {} to 1: {}. frame.args uses numerical indexes for order-based params.</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="kd">local</span> <span class="n">trailingComma</span> <span class="o">=</span> <span class="n">capture</span> <span class="ow">and</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">find</span><span class="p">(</span> <span class="n">capture</span><span class="p">,</span> <span class="s1">&#39;,%s*[%]%}]&#39;</span> <span class="p">)</span> <span class="c1">-- look for ,] or ,} : jsonDecode allows it, but it&#39;s verbotten in json</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kr">if</span> <span class="n">capture</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">trailingComma</span> <span class="kr">then</span> <span class="kr">return</span> <span class="nb">pcall</span><span class="p">(</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">jsonDecode</span><span class="p">,</span> <span class="n">capture</span> <span class="p">)</span> <span class="kr">end</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a><span class="kr">end</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">readTemplateData</span><span class="p">(</span> <span class="n">templateName</span> <span class="p">)</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span> <span class="n">templateName</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span> <span class="kr">then</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="n">templateName</span> <span class="o">=</span> <span class="p">{</span> <span class="n">templateName</span><span class="p">,</span> <span class="n">templateName</span> <span class="o">..</span> <span class="s1">&#39;/&#39;</span> <span class="o">..</span> <span class="n">docSubPage</span> <span class="p">}</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="kr">end</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span> <span class="n">templateName</span> <span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;table&quot;</span> <span class="kr">then</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">name</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">templateName</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="kd">local</span> <span class="n">td</span><span class="p">,</span> <span class="n">result</span> <span class="o">=</span> <span class="n">_readTemplateData</span><span class="p">(</span> <span class="n">name</span> <span class="p">)</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="kr">if</span> <span class="n">td</span> <span class="kr">then</span> <span class="kr">return</span> <span class="n">result</span> <span class="kr">end</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="kr">end</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="kr">end</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="kr">return</span> <span class="kc">nil</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a><span class="kr">end</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a><span class="c1">-- this is the function to be called by other modules. it expects the frame, and then an optional list of subpages, e.g. { &quot;Documentation&quot; }.</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a><span class="c1">-- if second parameter is nil, only tempalte page will be searched for templatedata.</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">calculateViolations</span><span class="p">(</span> <span class="n">frame</span><span class="p">,</span> <span class="n">subpages</span> <span class="p">)</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a><span class="c1">-- used for parameter type validy test. keyed by TD &#39;type&#39; string. values are function(val) returning bool.</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="kd">local</span> <span class="n">type_validators</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="p">[</span><span class="s1">&#39;number&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> <span class="kr">return</span> <span class="n">mw</span><span class="p">.</span><span class="n">language</span><span class="p">.</span><span class="n">getContentLanguage</span><span class="p">():</span><span class="n">parseFormattedNumber</span><span class="p">(</span> <span class="n">s</span> <span class="p">)</span> <span class="kr">end</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="p">}</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">compatible</span><span class="p">(</span> <span class="n">typ</span><span class="p">,</span> <span class="n">val</span> <span class="p">)</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="kd">local</span> <span class="n">func</span> <span class="o">=</span> <span class="n">type_validators</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kr">return</span> <span class="nb">type</span><span class="p">(</span> <span class="n">func</span> <span class="p">)</span> <span class="o">~=</span> <span class="s1">&#39;function&#39;</span> <span class="ow">or</span> <span class="n">util</span><span class="p">.</span><span class="n">empty</span><span class="p">(</span> <span class="n">val</span> <span class="p">)</span> <span class="ow">or</span> <span class="n">func</span><span class="p">(</span> <span class="n">val</span> <span class="p">)</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="kr">end</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">list_empty_or_contains</span><span class="p">(</span><span class="n">ar</span><span class="p">,</span> <span class="n">searched</span><span class="p">)</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">ar</span> <span class="ow">or</span> <span class="o">#</span><span class="n">ar</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> <span class="kr">end</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">val</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">ar</span><span class="p">)</span> <span class="kr">do</span> <span class="kr">if</span> <span class="n">val</span> <span class="o">==</span> <span class="n">searched</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> <span class="kr">end</span> <span class="kr">end</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="kr">end</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="kd">local</span> <span class="n">t_frame</span> <span class="o">=</span> <span class="n">frame</span><span class="p">:</span><span class="n">getParent</span><span class="p">()</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="kd">local</span> <span class="n">t_args</span><span class="p">,</span> <span class="n">template_name</span> <span class="o">=</span> <span class="n">t_frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="n">t_frame</span><span class="p">:</span><span class="n">getTitle</span><span class="p">()</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="kd">local</span> <span class="n">td_source</span> <span class="o">=</span> <span class="n">util</span><span class="p">.</span><span class="n">build_namelist</span><span class="p">(</span> <span class="n">template_name</span><span class="p">,</span> <span class="n">subpages</span> <span class="p">)</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="kd">local</span> <span class="n">templatedata</span> <span class="o">=</span> <span class="n">readTemplateData</span><span class="p">(</span> <span class="n">td_source</span> <span class="p">)</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="kd">local</span> <span class="n">td_params</span> <span class="o">=</span> <span class="n">templatedata</span> <span class="ow">and</span> <span class="n">templatedata</span><span class="p">.</span><span class="n">params</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> <span class="kd">local</span> <span class="n">all_aliases</span><span class="p">,</span> <span class="n">all_series</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">{}</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">td_params</span> <span class="kr">then</span> <span class="kr">return</span> <span class="p">{</span> <span class="p">[</span><span class="s1">&#39;no-templatedata&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="p">[</span><span class="s1">&#39;&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> <span class="p">}</span> <span class="p">}</span> <span class="kr">end</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="c1">-- from this point on, we know templatedata is valid.</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kd">local</span> <span class="n">res</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1">-- before returning to caller, we&#39;ll prune empty tables</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="c1">-- allow for aliases</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">p</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">td_params</span> <span class="p">)</span> <span class="kr">do</span> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">alias</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">p</span><span class="p">.</span><span class="n">aliases</span> <span class="ow">or</span> <span class="p">{}</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="n">all_aliases</span><span class="p">[</span><span class="n">alias</span><span class="p">]</span> <span class="o">=</span> <span class="n">p</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="kr">if</span> <span class="nb">tonumber</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="kr">then</span> <span class="n">all_aliases</span><span class="p">[</span><span class="nb">tonumber</span><span class="p">(</span><span class="n">alias</span><span class="p">)]</span> <span class="o">=</span> <span class="n">p</span> <span class="kr">end</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> <span class="kr">end</span> <span class="kr">end</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="c1">-- handle undeclared and deprecated</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="kd">local</span> <span class="n">already_seen</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="kd">local</span> <span class="n">series</span> <span class="o">=</span> <span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;series&#39;</span><span class="p">]</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="kr">for</span> <span class="n">p_name</span><span class="p">,</span> <span class="n">value</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">t_args</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kd">local</span> <span class="n">tp_param</span><span class="p">,</span> <span class="n">noval</span><span class="p">,</span> <span class="n">numeric</span><span class="p">,</span> <span class="n">table_name</span> <span class="o">=</span> <span class="n">td_params</span><span class="p">[</span><span class="n">p_name</span><span class="p">]</span> <span class="ow">or</span> <span class="n">all_aliases</span><span class="p">[</span><span class="n">p_name</span><span class="p">],</span> <span class="n">util</span><span class="p">.</span><span class="n">empty</span><span class="p">(</span> <span class="n">value</span> <span class="p">),</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">p_name</span> <span class="p">)</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="kd">local</span> <span class="n">hasval</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">noval</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">tp_param</span> <span class="ow">and</span> <span class="n">series</span> <span class="kr">then</span> <span class="c1">-- 2nd chance. check to see if series</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a> <span class="kr">for</span> <span class="n">s_name</span><span class="p">,</span> <span class="n">p</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span><span class="n">td_params</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span> <span class="n">p_name</span><span class="p">,</span> <span class="s1">&#39;^&#39;</span> <span class="o">..</span> <span class="n">s_name</span> <span class="o">..</span> <span class="s1">&#39;%d+&#39;</span> <span class="o">..</span> <span class="s1">&#39;$&#39;</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="c1">-- mw.log(&#39;found p_name &#39;.. p_name .. &#39; s_name:&#39; .. s_name, &#39; p is:&#39;, p) debugging series support</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="n">tp_param</span> <span class="o">=</span> <span class="n">p</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kr">end</span> <span class="c1">-- don&#39;t bother breaking. td always correct.</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">end</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="kr">end</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">tp_param</span> <span class="kr">then</span> <span class="c1">-- not in TD: this is called undeclared</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> <span class="c1">-- calculate the relevant table for this undeclared parameter, based on parameter and value types</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a> <span class="n">table_name</span> <span class="o">=</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> <span class="n">noval</span> <span class="ow">and</span> <span class="n">numeric</span> <span class="ow">and</span> <span class="s1">&#39;empty-undeclared-numeric&#39;</span> <span class="ow">or</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="n">noval</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">numeric</span> <span class="ow">and</span> <span class="s1">&#39;empty-undeclared&#39;</span> <span class="ow">or</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="n">hasval</span> <span class="ow">and</span> <span class="n">numeric</span> <span class="ow">and</span> <span class="s1">&#39;undeclared-numeric&#39;</span> <span class="ow">or</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="s1">&#39;undeclared&#39;</span> <span class="c1">-- tzvototi nishar.</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">else</span> <span class="c1">-- in td: test for deprecation and mistype. if deprecated, no further tests</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="n">tp_param</span><span class="p">.</span><span class="n">deprecated</span> <span class="ow">and</span> <span class="n">hasval</span> <span class="ow">and</span> <span class="s1">&#39;deprecated&#39;</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> <span class="ow">or</span> <span class="n">tp_param</span><span class="p">.</span><span class="n">deprecated</span> <span class="ow">and</span> <span class="n">noval</span> <span class="ow">and</span> <span class="s1">&#39;empty-deprecated&#39;</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="ow">or</span> <span class="ow">not</span> <span class="n">compatible</span><span class="p">(</span> <span class="n">tp_param</span><span class="p">.</span><span class="n">type</span><span class="p">,</span> <span class="n">value</span> <span class="p">)</span> <span class="ow">and</span> <span class="s1">&#39;incompatible&#39;</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> <span class="ow">or</span> <span class="ow">not</span> <span class="n">series</span> <span class="ow">and</span> <span class="n">already_seen</span><span class="p">[</span><span class="n">tp_param</span><span class="p">]</span> <span class="ow">and</span> <span class="n">hasval</span> <span class="ow">and</span> <span class="s1">&#39;duplicate&#39;</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> <span class="ow">or</span> <span class="n">hasval</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">list_empty_or_contains</span><span class="p">(</span><span class="n">tp_param</span><span class="p">.</span><span class="n">suggestedvalues</span> <span class="p">,</span> <span class="n">value</span><span class="p">)</span> <span class="ow">and</span> <span class="s1">&#39;unsuggested-value&#39;</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> <span class="n">already_seen</span><span class="p">[</span><span class="n">tp_param</span><span class="p">]</span> <span class="o">=</span> <span class="n">hasval</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="kr">end</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="c1">-- report it.</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="kr">if</span> <span class="n">table_name</span> <span class="kr">then</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="n">res</span><span class="p">[</span><span class="n">table_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="n">table_name</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="n">res</span><span class="p">[</span><span class="n">table_name</span><span class="p">][</span><span class="n">p_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="kr">end</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="kr">end</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="c1">-- test for empty/missing paraeters declared &quot;required&quot; </span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="kr">for</span> <span class="n">p_name</span><span class="p">,</span> <span class="n">param</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">td_params</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="kr">if</span> <span class="n">param</span><span class="p">.</span><span class="n">required</span> <span class="ow">and</span> <span class="n">util</span><span class="p">.</span><span class="n">empty</span><span class="p">(</span> <span class="n">t_args</span><span class="p">[</span><span class="n">p_name</span><span class="p">]</span> <span class="p">)</span> <span class="kr">then</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="kd">local</span> <span class="n">is_alias</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">alias</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">param</span><span class="p">.</span><span class="n">aliases</span> <span class="ow">or</span> <span class="p">{}</span> <span class="p">)</span> <span class="kr">do</span> <span class="n">is_alias</span> <span class="o">=</span> <span class="n">is_alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">util</span><span class="p">.</span><span class="n">empty</span><span class="p">(</span> <span class="n">t_args</span><span class="p">[</span><span class="n">alias</span><span class="p">]</span> <span class="p">)</span> <span class="kr">end</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">is_alias</span> <span class="kr">then</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="n">res</span><span class="p">[</span><span class="s1">&#39;empty-required&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s1">&#39;empty-required&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{}</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="n">res</span><span class="p">[</span><span class="s1">&#39;empty-required&#39;</span><span class="p">][</span><span class="n">p_name</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="kr">end</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a> <span class="kr">end</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> <span class="kr">end</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> <span class="kr">return</span> <span class="n">res</span> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a><span class="kr">end</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a><span class="c1">-- wraps report in hidden frame</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">wrapReport</span><span class="p">(</span><span class="n">report</span><span class="p">,</span> <span class="n">template_name</span><span class="p">,</span> <span class="n">options</span><span class="p">)</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a> <span class="kr">if</span> <span class="n">util</span><span class="p">.</span><span class="n">empty</span><span class="p">(</span> <span class="n">report</span> <span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="s1">&#39;&#39;</span> <span class="kr">end</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> <span class="kd">local</span> <span class="n">naked</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">new</span><span class="p">(</span> <span class="n">template_name</span> <span class="p">)[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="n">mw</span><span class="p">.</span><span class="n">log</span><span class="p">(</span><span class="n">report</span><span class="p">)</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> <span class="n">report</span> <span class="o">=</span> <span class="p">(</span> <span class="n">options</span><span class="p">[</span><span class="s1">&#39;wrapper-prefix&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">&quot;&lt;div class = &#39;paramvalidator-wrapper&#39;&gt;&lt;span class=&#39;paramvalidator-error&#39;&gt;&quot;</span> <span class="p">)</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="o">..</span> <span class="n">report</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="o">..</span> <span class="p">(</span> <span class="n">options</span><span class="p">[</span><span class="s1">&#39;wrapper-suffix&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">&quot;&lt;/span&gt;&lt;/div&gt;&quot;</span> <span class="p">)</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> <span class="n">report</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">report</span><span class="p">,</span> <span class="s1">&#39;tname_naked&#39;</span><span class="p">,</span> <span class="n">naked</span> <span class="p">)</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a> <span class="n">report</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">report</span><span class="p">,</span> <span class="s1">&#39;templatename&#39;</span><span class="p">,</span> <span class="n">template_name</span> <span class="p">)</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a> <span class="kr">return</span> <span class="n">report</span> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a><span class="kr">end</span> </span><span id="L-287"><a href="#L-287"><span class="linenos" data-line="287"></span></a> </span><span id="L-288"><a href="#L-288"><span class="linenos" data-line="288"></span></a><span class="c1">-- this is the &quot;user&quot; version, called with {{#invoke:}} returns a string, as defined by the options parameter</span> </span><span id="L-289"><a href="#L-289"><span class="linenos" data-line="289"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">validateParams</span><span class="p">(</span> <span class="n">frame</span> <span class="p">)</span> </span><span id="L-290"><a href="#L-290"><span class="linenos" data-line="290"></span></a> </span><span id="L-291"><a href="#L-291"><span class="linenos" data-line="291"></span></a> <span class="c1">-- for purple pages:</span> </span><span id="L-292"><a href="#L-292"><span class="linenos" data-line="292"></span></a> <span class="kr">if</span> <span class="n">frame</span><span class="p">:</span><span class="n">getParent</span><span class="p">().</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;skip parameters validation&#39;</span><span class="p">]</span> <span class="kr">then</span> <span class="kr">return</span> <span class="s1">&#39;[[ קטגוריה:דפים עם שגיאות פרמטריות שקיבלו חנינה]]&#39;</span> <span class="kr">end</span> </span><span id="L-293"><a href="#L-293"><span class="linenos" data-line="293"></span></a> <span class="kd">local</span> <span class="n">options</span><span class="p">,</span> <span class="n">report</span><span class="p">,</span> <span class="n">template_name</span> <span class="o">=</span> <span class="n">util</span><span class="p">.</span><span class="n">extract_options</span><span class="p">(</span> <span class="n">frame</span> <span class="p">),</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">frame</span><span class="p">:</span><span class="n">getParent</span><span class="p">():</span><span class="n">getTitle</span><span class="p">()</span> </span><span id="L-294"><a href="#L-294"><span class="linenos" data-line="294"></span></a> </span><span id="L-295"><a href="#L-295"><span class="linenos" data-line="295"></span></a> <span class="kd">local</span> <span class="n">ignore</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">p_name</span> <span class="p">)</span> </span><span id="L-296"><a href="#L-296"><span class="linenos" data-line="296"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">pattern</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span> <span class="n">options</span><span class="p">[</span><span class="s1">&#39;ignore&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="p">{}</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-297"><a href="#L-297"><span class="linenos" data-line="297"></span></a> <span class="kr">if</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">match</span><span class="p">(</span> <span class="n">p_name</span><span class="p">,</span> <span class="s1">&#39;^&#39;</span> <span class="o">..</span> <span class="n">pattern</span> <span class="o">..</span> <span class="s1">&#39;$&#39;</span> <span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="kc">true</span> <span class="kr">end</span> </span><span id="L-298"><a href="#L-298"><span class="linenos" data-line="298"></span></a> <span class="kr">end</span> </span><span id="L-299"><a href="#L-299"><span class="linenos" data-line="299"></span></a> <span class="kr">return</span> <span class="kc">false</span> </span><span id="L-300"><a href="#L-300"><span class="linenos" data-line="300"></span></a> <span class="kr">end</span> </span><span id="L-301"><a href="#L-301"><span class="linenos" data-line="301"></span></a> </span><span id="L-302"><a href="#L-302"><span class="linenos" data-line="302"></span></a> <span class="kd">local</span> <span class="n">replace_macros</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="n">param_names</span> <span class="p">)</span> </span><span id="L-303"><a href="#L-303"><span class="linenos" data-line="303"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">concat_and_escape</span><span class="p">(</span> <span class="n">t</span> <span class="p">)</span> </span><span id="L-304"><a href="#L-304"><span class="linenos" data-line="304"></span></a> <span class="kd">local</span> <span class="n">s</span> <span class="o">=</span> <span class="nb">table.concat</span><span class="p">(</span> <span class="n">t</span><span class="p">,</span> <span class="s1">&#39;, &#39;</span> <span class="p">)</span> </span><span id="L-305"><a href="#L-305"><span class="linenos" data-line="305"></span></a> <span class="kr">return</span> <span class="p">(</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="s1">&#39;%%&#39;</span><span class="p">,</span> <span class="s1">&#39;%%%%&#39;</span> <span class="p">)</span> <span class="p">)</span> </span><span id="L-306"><a href="#L-306"><span class="linenos" data-line="306"></span></a> <span class="kr">end</span> </span><span id="L-307"><a href="#L-307"><span class="linenos" data-line="307"></span></a> </span><span id="L-308"><a href="#L-308"><span class="linenos" data-line="308"></span></a> <span class="kr">if</span> <span class="n">s</span> <span class="ow">and</span> <span class="p">(</span> <span class="nb">type</span><span class="p">(</span> <span class="n">param_names</span> <span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;table&#39;</span> <span class="p">)</span> <span class="kr">then</span> </span><span id="L-309"><a href="#L-309"><span class="linenos" data-line="309"></span></a> <span class="kd">local</span> <span class="n">k_ar</span><span class="p">,</span> <span class="n">kv_ar</span> <span class="o">=</span> <span class="p">{},</span> <span class="p">{}</span> </span><span id="L-310"><a href="#L-310"><span class="linenos" data-line="310"></span></a> <span class="kr">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">param_names</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-311"><a href="#L-311"><span class="linenos" data-line="311"></span></a> <span class="nb">table.insert</span><span class="p">(</span> <span class="n">k_ar</span><span class="p">,</span> <span class="n">k</span> <span class="p">)</span> </span><span id="L-312"><a href="#L-312"><span class="linenos" data-line="312"></span></a> <span class="nb">table.insert</span><span class="p">(</span> <span class="n">kv_ar</span><span class="p">,</span> <span class="n">k</span> <span class="o">..</span> <span class="s1">&#39;: &#39;</span> <span class="o">..</span> <span class="n">v</span><span class="p">)</span> </span><span id="L-313"><a href="#L-313"><span class="linenos" data-line="313"></span></a> <span class="kr">end</span> </span><span id="L-314"><a href="#L-314"><span class="linenos" data-line="314"></span></a> <span class="n">s</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="s1">&#39;paramname&#39;</span><span class="p">,</span> <span class="n">concat_and_escape</span><span class="p">(</span> <span class="n">k_ar</span> <span class="p">)</span> <span class="p">)</span> </span><span id="L-315"><a href="#L-315"><span class="linenos" data-line="315"></span></a> <span class="n">s</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">ustring</span><span class="p">.</span><span class="n">gsub</span><span class="p">(</span> <span class="n">s</span><span class="p">,</span> <span class="s1">&#39;paramandvalue&#39;</span><span class="p">,</span> <span class="n">concat_and_escape</span><span class="p">(</span> <span class="n">kv_ar</span> <span class="p">)</span> <span class="p">)</span> </span><span id="L-316"><a href="#L-316"><span class="linenos" data-line="316"></span></a> <span class="kr">end</span> </span><span id="L-317"><a href="#L-317"><span class="linenos" data-line="317"></span></a> <span class="kr">return</span> <span class="n">s</span> </span><span id="L-318"><a href="#L-318"><span class="linenos" data-line="318"></span></a> <span class="kr">end</span> </span><span id="L-319"><a href="#L-319"><span class="linenos" data-line="319"></span></a> </span><span id="L-320"><a href="#L-320"><span class="linenos" data-line="320"></span></a> <span class="kd">local</span> <span class="n">report_params</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span> <span class="n">key</span><span class="p">,</span> <span class="n">param_names</span> <span class="p">)</span> </span><span id="L-321"><a href="#L-321"><span class="linenos" data-line="321"></span></a> <span class="kd">local</span> <span class="n">res</span> <span class="o">=</span> <span class="n">replace_macros</span><span class="p">(</span> <span class="n">options</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="n">param_names</span> <span class="p">)</span> </span><span id="L-322"><a href="#L-322"><span class="linenos" data-line="322"></span></a> <span class="n">report</span> <span class="o">=</span> <span class="n">report</span> <span class="o">..</span> <span class="p">(</span> <span class="n">res</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span> <span class="p">)</span> </span><span id="L-323"><a href="#L-323"><span class="linenos" data-line="323"></span></a> <span class="kr">return</span> <span class="n">res</span> </span><span id="L-324"><a href="#L-324"><span class="linenos" data-line="324"></span></a> <span class="kr">end</span> </span><span id="L-325"><a href="#L-325"><span class="linenos" data-line="325"></span></a> </span><span id="L-326"><a href="#L-326"><span class="linenos" data-line="326"></span></a> <span class="c1">-- no option no work.</span> </span><span id="L-327"><a href="#L-327"><span class="linenos" data-line="327"></span></a> <span class="kr">if</span> <span class="n">util</span><span class="p">.</span><span class="n">table_empty</span><span class="p">(</span> <span class="n">options</span> <span class="p">)</span> <span class="kr">then</span> <span class="kr">return</span> <span class="s1">&#39;&#39;</span> <span class="kr">end</span> </span><span id="L-328"><a href="#L-328"><span class="linenos" data-line="328"></span></a> </span><span id="L-329"><a href="#L-329"><span class="linenos" data-line="329"></span></a> <span class="c1">-- get the errors.</span> </span><span id="L-330"><a href="#L-330"><span class="linenos" data-line="330"></span></a> <span class="kd">local</span> <span class="n">violations</span> <span class="o">=</span> <span class="n">calculateViolations</span><span class="p">(</span> <span class="n">frame</span><span class="p">,</span> <span class="n">options</span><span class="p">[</span><span class="s1">&#39;doc-subpage&#39;</span><span class="p">]</span> <span class="p">)</span> </span><span id="L-331"><a href="#L-331"><span class="linenos" data-line="331"></span></a> <span class="c1">-- special request of bora: use skip_empty_numeric</span> </span><span id="L-332"><a href="#L-332"><span class="linenos" data-line="332"></span></a> <span class="kr">if</span> <span class="n">violations</span><span class="p">[</span><span class="s1">&#39;empty-undeclared-numeric&#39;</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-333"><a href="#L-333"><span class="linenos" data-line="333"></span></a> <span class="kr">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">tonumber</span><span class="p">(</span> <span class="n">options</span><span class="p">[</span><span class="s1">&#39;skip-empty-numeric&#39;</span><span class="p">]</span> <span class="p">)</span> <span class="ow">or</span> <span class="mi">0</span> <span class="kr">do</span> </span><span id="L-334"><a href="#L-334"><span class="linenos" data-line="334"></span></a> <span class="n">violations</span><span class="p">[</span><span class="s1">&#39;empty-undeclared-numeric&#39;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-335"><a href="#L-335"><span class="linenos" data-line="335"></span></a> <span class="kr">end</span> </span><span id="L-336"><a href="#L-336"><span class="linenos" data-line="336"></span></a> <span class="kr">end</span> </span><span id="L-337"><a href="#L-337"><span class="linenos" data-line="337"></span></a> </span><span id="L-338"><a href="#L-338"><span class="linenos" data-line="338"></span></a> <span class="c1">-- handle ignore list, and prune empty violations - in that order!</span> </span><span id="L-339"><a href="#L-339"><span class="linenos" data-line="339"></span></a> <span class="kd">local</span> <span class="n">offenders</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-340"><a href="#L-340"><span class="linenos" data-line="340"></span></a> <span class="kr">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">tab</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">violations</span> <span class="p">)</span> <span class="kr">do</span> </span><span id="L-341"><a href="#L-341"><span class="linenos" data-line="341"></span></a> <span class="c1">-- remove ignored parameters from all violations</span> </span><span id="L-342"><a href="#L-342"><span class="linenos" data-line="342"></span></a> <span class="kr">for</span> <span class="n">pname</span> <span class="kr">in</span> <span class="nb">pairs</span><span class="p">(</span> <span class="n">tab</span> <span class="p">)</span> <span class="kr">do</span> <span class="kr">if</span> <span class="n">ignore</span><span class="p">(</span> <span class="n">pname</span> <span class="p">)</span> <span class="kr">then</span> <span class="n">tab</span><span class="p">[</span><span class="n">pname</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> <span class="kr">end</span> <span class="kr">end</span> </span><span id="L-343"><a href="#L-343"><span class="linenos" data-line="343"></span></a> <span class="c1">-- prune empty violations</span> </span><span id="L-344"><a href="#L-344"><span class="linenos" data-line="344"></span></a> <span class="kr">if</span> <span class="n">util</span><span class="p">.</span><span class="n">table_empty</span><span class="p">(</span> <span class="n">tab</span> <span class="p">)</span> <span class="kr">then</span> <span class="n">violations</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="kc">nil</span> <span class="kr">end</span> </span><span id="L-345"><a href="#L-345"><span class="linenos" data-line="345"></span></a> <span class="c1">-- WORK IS DONE. report the errors.</span> </span><span id="L-346"><a href="#L-346"><span class="linenos" data-line="346"></span></a> <span class="c1">-- if report then count it.</span> </span><span id="L-347"><a href="#L-347"><span class="linenos" data-line="347"></span></a> <span class="kr">if</span> <span class="n">violations</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="ow">and</span> <span class="n">report_params</span><span class="p">(</span> <span class="n">name</span><span class="p">,</span> <span class="n">tab</span> <span class="p">)</span> <span class="kr">then</span> <span class="n">offenders</span> <span class="o">=</span> <span class="n">offenders</span> <span class="o">+</span> <span class="mi">1</span> <span class="kr">end</span> </span><span id="L-348"><a href="#L-348"><span class="linenos" data-line="348"></span></a> <span class="kr">end</span> </span><span id="L-349"><a href="#L-349"><span class="linenos" data-line="349"></span></a> </span><span id="L-350"><a href="#L-350"><span class="linenos" data-line="350"></span></a> <span class="kr">if</span> <span class="n">offenders</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="kr">then</span> <span class="n">report_params</span><span class="p">(</span> <span class="s1">&#39;multiple&#39;</span> <span class="p">)</span> <span class="kr">end</span> </span><span id="L-351"><a href="#L-351"><span class="linenos" data-line="351"></span></a> <span class="kr">if</span> <span class="n">offenders</span> <span class="o">~=</span> <span class="mi">0</span> <span class="kr">then</span> <span class="n">report_params</span><span class="p">(</span> <span class="s1">&#39;any&#39;</span> <span class="p">)</span> <span class="kr">end</span> <span class="c1">-- could have tested for empty( report ), but since we count them anyway...</span> </span><span id="L-352"><a href="#L-352"><span class="linenos" data-line="352"></span></a> <span class="kr">return</span> <span class="n">wrapReport</span><span class="p">(</span><span class="n">report</span><span class="p">,</span> <span class="n">template_name</span><span class="p">,</span> <span class="n">options</span><span class="p">)</span> </span><span id="L-353"><a href="#L-353"><span class="linenos" data-line="353"></span></a><span class="kr">end</span> </span><span id="L-354"><a href="#L-354"><span class="linenos" data-line="354"></span></a> </span><span id="L-355"><a href="#L-355"><span class="linenos" data-line="355"></span></a><span class="kr">return</span> <span class="p">{</span> </span><span id="L-356"><a href="#L-356"><span class="linenos" data-line="356"></span></a> <span class="p">[</span><span class="s1">&#39;validateparams&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">validateParams</span><span class="p">,</span> </span><span id="L-357"><a href="#L-357"><span class="linenos" data-line="357"></span></a> <span class="p">[</span><span class="s1">&#39;calculateViolations&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">calculateViolations</span><span class="p">,</span> </span><span id="L-358"><a href="#L-358"><span class="linenos" data-line="358"></span></a> <span class="p">[</span><span class="s1">&#39;wrapReport&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">wrapReport</span> </span><span id="L-359"><a href="#L-359"><span class="linenos" data-line="359"></span></a><span class="p">}</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐wfhcx Cached time: 20241124115809 Cache expiry: 2592000 Reduced expiry: false Complications: [] CPU time usage: 0.009 seconds Real time usage: 0.013 seconds Preprocessor visited node count: 23/1000000 Post‐expand include size: 5482/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 3/100 Expensive parser function count: 0/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 553/5000000 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 4.086 1 יחידה:ParamValidator/תיעוד 100.00% 4.086 1 -total --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">אוחזר מתוך "<a dir="ltr" href="https://he.wikipedia.org/w/index.php?title=יחידה:ParamValidator&amp;oldid=39654616">https://he.wikipedia.org/w/index.php?title=יחידה:ParamValidator&amp;oldid=39654616</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%A7%D7%98%D7%92%D7%95%D7%A8%D7%99%D7%94" title="ויקיפדיה:קטגוריה">קטגוריה</a>: <ul><li><a href="/wiki/%D7%A7%D7%98%D7%92%D7%95%D7%A8%D7%99%D7%94:%D7%A0%D7%99%D7%94%D7%95%D7%9C_%D7%A4%D7%A8%D7%9E%D7%98%D7%A8%D7%99%D7%9D" title="קטגוריה:ניהול פרמטרים">ניהול פרמטרים</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> דף זה נערך לאחרונה ב־20 בספטמבר 2024, בשעה 03:01.</li> <li id="footer-info-copyright">הטקסט מוגש בכפוף לרישיון <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.he">Creative Commons ייחוס-שיתוף זהה 4.0</a>; ייתכן שישנם תנאים נוספים. ר׳ את <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">תנאי השימוש</a> לפרטים.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">מדיניות פרטיות</a></li> <li id="footer-places-about"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%90%D7%95%D7%93%D7%95%D7%AA">אודות ויקיפדיה</a></li> <li id="footer-places-disclaimers"><a href="/wiki/%D7%95%D7%99%D7%A7%D7%99%D7%A4%D7%93%D7%99%D7%94:%D7%94%D7%91%D7%94%D7%A8%D7%95%D7%AA_%D7%9E%D7%A9%D7%A4%D7%98%D7%99%D7%95%D7%AA">הבהרות משפטיות</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">קוד התנהגות</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">מפתחים</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/he.wikipedia.org">סטטיסטיקות</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">הצהרה על עוגיות</a></li> <li id="footer-places-mobileview"><a href="//he.m.wikipedia.org/w/index.php?title=%D7%99%D7%97%D7%99%D7%93%D7%94:ParamValidator&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">תצוגת מכשירים ניידים</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-wfhcx","wgBackendResponseTime":260,"wgPageParseReport":{"limitreport":{"cputime":"0.009","walltime":"0.013","ppvisitednodes":{"value":23,"limit":1000000},"postexpandincludesize":{"value":5482,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":3,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":553,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 4.086 1 יחידה:ParamValidator/תיעוד","100.00% 4.086 1 -total"]},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-wfhcx","timestamp":"20241124115809","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10