Module:TextPredicate/doc
这是Module:TextPredicate的文档页面
简介
TextPredicate用于解析一个text文本构成的布尔表达式。能够解析一段满足格式要求的文本作为表达式。可以进行与或非操作,可以进行判断。供其他模块调用。如textPredicate=require("Moudle:TextPredicate")
。
属性
符号
为避免与维基文本使用的特殊字符重复,允许符号重定义。
symbolOr
:表示“或”的符号。默认为|
。symbolAnd
:表示“与”的符号。默认为&
。symbolNot
:表示“非”的符号。默认为-
。symbolBrackets
:表示“括号”的两个符号。默认为()
。
一般而言匹配文本时需要更改symbolOr
符号,避免冲突。
值
_true
:绝对为真的表达式。_false
:绝对为假的表达式。
函数
生成
textPredicate.createExpress(text)
识别文本并生成表达式。规则与通常的布尔表达式相同,除规定符号外文本皆视为变量。
在不改变符号的情况下,表达式可以表示如:a&-b|(a&c)
。也可以表示如变量1|这个&(那个|-变量b)
。
判断
textPredicate:__call(names)
即textPredicate(names)
对一组变量表进行判断,判别表达式下是否成立。该表内应为变量名
或symbolNot变量名
,表示真或假。
textPredicate:__eq(other)
即textPredicate==other
,判断表达式内容实质是否相同。
textPredicate:__le(other)
即textPredicate<=other
,判断表达式内容实质是否被后者包含。即该表达式成立时后者必然成立。
textPredicate:isReal(bool)
判断表达式是否恒为真/假。与textPredicate==textPredicate._true
textPredicate==textPredicate._false
等效。
留空则判断表达式是否为真值。
计算
由于元方法支持有限,符号比较错乱。 自身运算表示并不返回值,而是将值赋值到第一个参数中。
textPredicate:__concat(other)
即textPredicate..other
,计算表达式的“与”。
自身运算为textPredicate:concat(other)
。
textPredicate:__add(other)
即textPredicate+other
,计算表达式的“或”。
自身运算为textPredicate:add(other)
。
textPredicate:__unm()
即-textPredicate
,计算表达式的“非”。
自身运算为textPredicate:unm(other)
。
textPredicate:__sub(other)
即textPredicate-other
,计算表达式的“差”。但如果调用方法则会同时返回表达式的“与”,
自身运算为textPredicate:sub(other)
。返回表达式的“与”。
textPredicate:changeListClone(list)
list
为一组变量文本。
计算表达式改变使用的变量组后的情况。默认不在list
中的变量值均为true
。
自身运算为textPredicate:changeList(other)
。
textPredicate:limitTo(list)
list
为一组变量文本。
限制表达式使用的变量组,默认不在list中的变量值均为false
。
迭代器
textPredicate:gAllowNames()
依次返回表达式允许情况的bits值以及与之对应的一个变量文本的表。该表内容与#textPredicate:__call(names)一致。