模組: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的中間過程,以便除錯。