手册:解析器功能

来自MyaWiki.Org
跳转到导航 跳到搜索

OOJS UI图标 扩展 发展 ·标记扩展 ·解析器函数 ·挂钩 ·专版 · ·魔法词 ·应用程序接口 ·内容模型
MeimaWiKi扩展

在MeaWiKi 1.7中添加的解析器函数是与解析器紧密结合的扩展类型。短语“解析器函数”不应混淆。扩展:PARSH函数 ,它是简单解析器函数的集合。(见帮助:扩展:帕塞尔函数 对于那些。)

描述[编辑]

而A标签扩展期望将未处理的文本和HTML返回到浏览器,解析器函数可以与页面中的其他wiki元素交互。例如,解析器函数的输出可以用作模板参数或者在A链接.

语法分析器功能的典型语法是:

{{函数名:PARAM1}PARAM2}PARAM3}

有关更多信息,请参见文献资料解析器::StimeStimeHOK($ID,$回调,$FLAGS=0). 这份文件说明:

回调函数应具有以下形式:
函数MyPARSREST(& $解析器,$ARG1,$ARG2,$ARG3){…}
或与SFHObObjut-ARGS
函数MyPARSREST($解析器,$帧,$ARGS){…}

创建一个解析器函数比创建一个新标签稍微复杂一些,因为函数名必须是魔术字支持别名和本地化的关键字。

简单实例[编辑]

下面是创建解析器函数的扩展的示例。

注册进入扩展子代码进入实例说明分别:

{
	“姓名”“示例扩展”“作者”“我”“版本”“1.0.0”“URL”“http://www. MeaWiki .org/wiki /扩展:示例扩展”“描述性MSG”“示例扩展DESC”“许可证名称”“GPL-2.0或更高版本”“类型”“鹦鹉钩”“MessagesDirs”{
		“示例扩展”[
			“I18N”
		]
	}“AutoLoad类”{
		“示例扩展钩子”“SRC/Excel扩展挂钩.PHP”
	}“扩展消息文件”{
		“示例扩展魔法”“ExpExtay.I18n.php”
	}“钩子”{
		“PARSerFistCalimIT”“Excel扩展钩子::OnPARSerFistCalimIt”
	}“宣言版”
}
<?PHP
 伸长钩 {
   /用解析器注册任何呈现回调
   公共 静止的 功能 OnPrServestCalimIt 语法分析器 $语法分析器  {

      //创建一个函数挂钩,将“示例”魔术字与ReNelExcel()关联起来。
      $语法分析器>设置函数钩子 “榜样” [ 自己:: “RealDebug” ] 
   }

   //呈现{{示例:}}的输出。
   公共 静止的 功能 渲染示例 语法分析器 $语法分析器 PARAM1 =  PARAM2 =  PARAM3 =   {

      //输入参数是WiKiTeXT,模板扩展。
      //输出也应该是WikEXTEXT。
      美元产量 = PARAM1是PARAM1PARAM2是PARAM2PARAM3是PARAM3

      退货 美元产量
   }
}

另一个文件,扩展实例应包含:

<?PHP
/**
*@许可证GPL-2.0或更高版本
*@你的名字(你的用户名)
*/

美元魔术 = [];

/**英语
*@你的名字(你的用户名)
*/
美元魔术[“恩”] = [
   “榜样” = > [  “榜样” 

启用此扩展,

  • {{例子:你好,嗨,嘿}}

生产:

  • PARAM1是你好,PARAM2是HI,PARAM3是HI。
这个幻灯片数组不是可选的。如果省略,解析器函数将无法工作;{{示例:hello } H}}将呈现为未安装扩展名。

更长的功能[编辑]

对于较长的函数,您可能希望将钩子函数拆分为一个.Bydi.PHP或.HoOK.PHP文件,并使它们成为一个类的静态函数。然后您可以加载类$WGAutoLoad类 并调用钩子中的静态函数;例如:

把这个放进你的手中扩展子文件

“钩子” {
	“PARSerFistCalimIT” “Excel扩展钩子::OnPARSerFistCalimIt”
}
“AutoLoad类” {
	“示例扩展钩子” “SRC/Excel扩展挂钩.PHP”
}

然后把这个放在你的手里实例说明文件

 伸长钩 {
      公共 静止的 功能 OnPrServestCalimIt 语法分析器 $语法分析器  {
           $语法分析器>设置函数钩子 “榜样” [ 自己:: “RealDebug” ] 
      }
}


高速缓存[编辑]

与标记扩展一样$解析器-> DababeCache()可用于禁用动态扩展的缓存。

解析器接口[编辑]

控制输出解析[编辑]

要使解析器函数返回的WiKiTeXT完全解析(包括模板的扩展),请设置诺帕尔斯返回时选项为假:

退货 [ 美元产量 “诺帕尔斯” = >  

似乎默认值为诺帕尔斯从假的到真的,至少在某些情况下,大约在版本1.12左右。

相反,要使解析器函数返回未解析的HTML,而不是返回WiKiTeXT,请使用:

退货 [ 美元产量 “诺帕尔斯” = >  iStML = >  

然而,

这是{{例子:你好,嗨,嗨}}一个测试。

会产生这样的事情:

这是

PARAM1是你好,PARAM2是HI,PARAM3是HEA测试。

这是由于硬编码的“\n’n”被添加到解析器函数的HTML输出中。为了避免这种情况,并确保HTML代码与周围文本呈现为内联,您可以使用:

退货 $语法分析器>插入条目 美元产量 $语法分析器>麦克劳德 

命名[编辑]

默认情况下,MW在每个解析器函数的名称中添加一个哈希字符(数字符号,“x”)。斯芬诺尼哈希在可选标记参数中设置为StimeBooSover的常量,如在下面.

在选择没有哈希前缀的名称时,请注意,从函数名后面跟着冒号开始的页面的转换不再是可能的。特别是,避免函数名称等于命名空间名称。在WiWiki交叉的情况下〔1〕启用,也避免函数名称等于一个WiWiKi前缀。

设置函数钩子[编辑]

有关接口到解析器的更多细节,请参阅StimeStudioHooin中包含/Pals.php的文档。这里是这些注释的(可能是过时的)副本:

函数集函数钩子($ id,$回调,$FLAGS=0) 参数:

  • 字符串$id -魔法字ID
  • 混合回调函数-回调函数(和对象)使用
  • 整数$标志-可选,将其设置为斯芬诺尼哈希常数来调用函数,而不需要“γ”。

返回值:这个名称的旧回调函数,如果有的话

创建一个函数,例如{{和1∶2×3 }}. 回调函数应具有以下形式:

功能 肌功能 $语法分析器 $ARG1 $ARG2 $ARG3  {  }

回调可以返回函数的文本结果,也可以返回元素0中具有文本的数组,以及其他元素中的多个标志。标志的名称在键中指定。有效标志是:

发现的
返回的文本是有效的,停止处理模板。这是默认的。
诺维基
返回值中的wiki标记应该被转义
诺帕赛
不应该删除不安全的HTML标签等。
诺尔格斯
不要在返回值中替换三个支撑参数
伊希特曼
返回的文本是HTML,它是针对WiKiTeXT变换的盔甲

命名参数[编辑]

解析器函数不支持模板和标记扩展的方式来命名参数,但有时伪造它是有用的。用户通常习惯于使用垂直条来分离参数,所以在解析器函数上下文中也能做到这一点是很好的。这里有一个简单的例子来说明如何做到这一点:

功能 扩展RelordPARSREST功能 &$语法分析器  {
	//假设用户调用解析器函数如下:
	/{{{y} MyPARSARE函数:Fo=棒状苹果=橙色}香蕉}

	美元期权 = 萃取物 阵列切片函数函数()  

	继续写你的代码…
}

/**
*将窗体[0 ]=>“name=值”中的值数组转换为真值
*表单[名称] = >值中的关联数组。如果没有提供,
*真是这样假设的:[Nosi]=>真
*
*@ PARAM数组字符串$选项
*返回数组$$结果
*/
功能 萃取物 数组 美元期权  {
	$结果 = 数组();

	前额  美元期权 作为 美元期权  {
		一双 = 爆炸 “=” 美元期权  
		如果  计数 一双  = =   {
			美元名称 = 修剪 一双[] 
			美元价值 = 修剪 一双[] 
			$结果[美元名称] = 美元价值
		}

		如果  计数 一双  = =   {
			美元名称 = 修剪 一双[] 
			$结果[美元名称] = 
		}
	}
	现在你有一个这样的数组:
	/F[oo]=>“bar”
	[苹果] =“橙色”
	[ [香蕉]=>真

	退货 $结果
}

也见[编辑]