模組:Rfx/doc
此頁面為 Module:Rfx 的說明文件
此模組文件已評為alpha版,可接受第三方輸入,並可用於少量頁面以檢查是否存在問題,但需要受到檢查。歡迎提供新功能或修改其輸入輸出機制的建議。 |
此模塊可以解析申請成為管理人員(RfX)投票的信息,目前支持管理員、行政員、用戶查核員、監督員和界面管理員投票。通常此模塊不應直接被內容頁面調用,而應作為底層模塊被其他Lua模塊調用。
構造rfx對象
首先必須加載此模塊:
local rfx = require( 'Module:Rfx' )
之後調用rfx.new()
構造RfX對象。注意:高開銷函數(見下)
rfx.new()
調用方法如下:
local myRfx = rfx.new( pagename )
pagename
需為完整的RfX頁面名,例如:
local exampleRfa = rfx.new( 'Wikipedia:申请成为管理员/Example' )
如果未指定pagename
,或它並不是WP:申請成為管理員、WP:申請成為行政員、WP:申請成為用戶查核員、WP:申請成為監督員或WP:申請成為界面管理員的子頁面,則rfx.new
會返回nil
。
rfx對象的屬性與方法
構造成功rfx
對象後,就可以使用以下屬性與方法了。注意這些屬性與方法均只讀。
- 屬性
type
:RfX的類型。可以為「rfa
」、「rfb
」、「rfcu
」、「rfo
」或「rfia
」。supports
:支持數。如果無法解析投票數,返回nil
。opposes
:反對數。如果無法解析投票數,返回nil
。neutrals
:中立數。如果無法解析投票數,返回nil
。percent
:支持率,即 ,四捨五入至整數。如果無法解析投票數,返回nil
。endTime
:結束時間,通過抓取RfX頁面的源代碼得到,為字符串類型。如果無法解析,返回nil
。user
:候選人,不帶「User:」前綴。如果無法解析,返回nil
。
- 方法
請用下述格式調用以下方法:
local titleObject = exampleRfa:getTitleObject()
getTitleObject()
:返回RfX頁面的標題對象,參見Lua手冊。getSupportUsers()
:返回一張表,為所有投支持票的用戶,根據簽名判斷。如果無法解析某個簽名,則對應值為「簽名剖析失敗:(該用戶的投票源代碼)」。該表可傳遞給dupesExist()
函數判斷是否有重複投票。如果完全無法解析支持票所在段落,返回nil
。getOpposeUsers()
:類似於getSupportUsers()
,返回投反對票的用戶列表。getNeutralUsers()
:類似於getSupportUsers()
,返回投中立票的用戶列表。dupesExist()
:返回一張表,為所有重複投票的用戶。如果沒有重複投票的用戶,返回值是空的表。如果無法解析傳入參數,返回nil
。getSecondsLeft()
:返回距離投票結束的秒數。若投票已經結束,則返回0。如果無法解析結束時間,返回nil
。getTimeLeft()
:返回距離投票結束的時間,為一字符串,格式為「x days, y hours
」。如果已經結束或無法解析,返回nil
。getReport()
:返回Jimmy的驗票工具對應的URI對象。getStatus()
:返回RfX的當前狀態,為「投票中」或「已結束」。如果無法解析,返回nil
。isSecurePoll()
:返回RfX是不是使用安全投票,參見Module:Rfx/correction。
另外,rfx
對象重載了==
運算符。如果兩個rfx對象對應頁面相同,則返回true。tostring( rfx )
會返回RfX頁面對象的prefixedTitle
屬性(參見Lua手冊)。
高開銷函數
為獲取RfX頁面的源代碼,此模塊使用了title:getContent方法。每次建立rfx對象時都會調用一次該函數,所以調用rfx.new
會被計入高開銷解析函數調用數。所以請注意,如果當前的RfX數目太多,這個模塊可能會運行異常(當前限制為每個頁面最多調用500次高開銷解析函數)。此外,在使用本模塊的頁面的Special:鏈入頁面中,可以看到對應RfX頁面被嵌入包含。