模組:PJBSClass/main/doc

此頁面為 Module:PJBSClass/main 的說明文件

本模組的功能:

  • 透過調用Module:PJBSClass/page間接調用Module:PJBSClass
    • 讀取{{PJBS}}中的評級值
    • 自動透過命名空間盼判斷評級值
  • 進階自動評級
    • 透過解析頁面內容判斷頁面是否為軟重新導向
    • 透過解析頁面內容判斷頁面是否為消歧義
  • 判斷專題橫幅是繼承{{PJBS}}中的評級值還是自訂評級值並加入維護分類
  • 輔助{{PJBS}}中的一些與專題評級值相關的功能

用法

本模組主要用於讀取頁面中定義於{{PJBS}}或專題橫幅中的評級值,或自動根據命名空間或維基代碼判斷評級。

維基代碼可判斷的評級值
判斷種類 判斷依據 對應的評級
典範條目 典範條目模板(如{{Featured article}})   典範
優良條目 優良條目模板(如{{Good article}})   優良
特色列表 特色列表模板(如{{Featured list}})   特色列表
特色圖片 特色圖片模板(如{{Featured picture}})   特色圖片
重新導向 頁面物件isRedirect欄位。   重新導向
軟重新導向 軟重新導向模板(如{{軟重新導向}})   重新導向
沙盒 沙盒模板(如{{Sandbox}})   沙盒
消歧義 消歧義模板(如{{消歧義}})
以及相關魔術字(如__DISAMBIG__
  消歧義
列表 名稱以「列表」結尾的頁面   列表
同類索引 同類索引模板(如{{同類索引}})   同類索引
小作品 條目的位元組數是否小於2000
(2000~3000間的過渡數值不自動評)
  小作品
命名空間可判斷的評級值
命名空間 前綴 對應的評級
模板 Template:  模板
模組 Module:  模組
分類 Category:  分類
檔案 File:  檔案
草稿 Draft:  草稿
主題 Portal:  主題
專題 PJ:  專題
用戶 User:  用戶
說明 Help:  使用說明
MediaWiki MediaWiki:  介面
字幕 TimedText:  非條目
媒體 Media:  非條目
特殊 Special:  非條目

模組中的主要函數

getClass
模組調用:p.getClass(class_name)
模板調用:{{#invoke:PJBSClass/main|getClass| class_name | auto=yes/no | inheritance=yes/no | demo=yes/no }}
間接調用Module:PJBSClass#getClassByPage
取得所在頁面的評級,可以輸入一個評級值(class_name)作為覆蓋與否的判斷依據。auto為是否要以自動判斷的評級為優先;inheritance為是否要以繼承值為優先;demo為是否為模板演示。
getClassAuto
模組調用:p.getClassAuto(page_name, class_default, demo)
模板調用:{{#invoke:PJBSClass/main|getClassAuto| class_name | class=class_default | demo=yes/no }}
間接調用Module:PJBSClass#getAutoClass,並額外加入了從維基代碼判斷評級的功能,見維基代碼可判斷的評級值
自動判斷名為「page_name」頁面的評級,若「page_name」未輸入則判斷所在頁面的評級。若無法判斷則回傳「class_default」。
class_json
模組調用:p.class_json()
模板調用:{{#invoke:PJBSClass/main|class_json}}
提供Module:PJBSClass#{{Module:PJBSClass/page}}轉換Lua到JSON的函數。此函數沒有參數,僅回傳所在條目mw.loadData("Module:PJBSClass/page")JSON結果。模板調用應使用{{Module:PJBSClass/page|json=yes}}
getPageType
判斷該級別的分類頁面種類。

模組中的元函數

_getClass
模組調用:p._getClass(class_name, auto, inheritance, demo)
模板調用:{{#invoke:PJBSClass/main|_getClass| class_name | auto=yes/no | inheritance=yes/no | demo=yes/no }}
#getClass
_getProjects
模組調用:p._getProjects(html)
模板調用:(無法使用)
解析「html」中的評級模板,列出當中的所有專題名稱。

專題橫幅內部函數

subjectPageTitle
模組調用:p.subjectPageTitle(page_name)
模板調用:{{#invoke:PJBSClass/main|subjectPageTitle| page_name }}
無論名為「page_name」頁面是否是討論頁都會回傳其所對應之主要頁面的名稱。如果「page_name」不是討論頁,則回傳原頁面名稱。如果「page_name」未輸入則輸出所在頁面(無論是否是討論頁)所對應之主要頁面的名稱。如果所在頁面不是討論頁,則回傳所在頁面名稱。
listProjects
模組調用:p.listProjects(html, code, comma, max_num)
模板調用:{{#invoke:PJBSClass/main|listProjects| html | code=code | comma=comma | tail=tail | max_num=max_num }}
列舉「html」中所有專題橫幅的專題,主要由{{PJBS}}調用。「code」為輸出的格式,$1代表專題名稱、$2代表分隔符號。「comma」為分隔符號。「tail」為自動加在尾端的文字,預設為專題。「max_num」為最大列舉數量。
checkClassInput
檢查是否評級繼承與否
wrongClass
檢查是否誤將橫幅與評級輸入在一起
hasCustomClassName
檢查專題橫幅有無自訂評級級別
customClassName
處理專題橫幅的自訂評級級別
processNotice
將輸入到{{PJBS}}的專題橫幅處理成符合{{PJBS}}的樣式,並移除專題橫幅內自帶的提示模板,{{PJBS}}會使用#getNotice將之統一加入。同時解析內容添加適當的維護分類。
getNotice
解析輸入到{{PJBS}}的專題橫幅有無橫幅內自帶的提示模板,移除重複的提示模板後,加以顯示。

判斷頁面屬性函數

is_softredirect
判斷頁面是否為軟重新導向。
is_disambiguation
判斷頁面是否為消歧義頁。
is_sandbox
判斷頁面是否為沙盒。

可供其他模組調用的私有函數

_re_softredirect_template
匹配軟重新導向模板的正則函數。
_re_disambiguation_title
匹配消歧義標題的正則函數。
_re_disambiguation_template
匹配消歧義模板的正則函數。
_re_sandbox_template
匹配沙盒模板的正則函數。
_remove_wikiproject_flag
用於避免消歧義判斷模板循環的跳脫函數,會破壞輸入的內容、移除魔術字,僅保留模板,以供展看測試有無消歧義魔術字。

除錯用函數

_checker
檢查函數是否會出錯的函數。如無出錯,將頁面加入分類:可以正常讀取評級的條目;如出錯,將頁面加入分類:無法正常讀取評級的條目
check_disambig_process
列出#is_disambiguation的中間過程,以便除錯。