此頁面為 Module:Rfx 的說明文件

此模塊可以解析申請成為管理人員(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頁面被嵌入包含