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