模組: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頁面被嵌入包含。