| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #nop 样板模块;
- /*
- 加载模块用 load-module EXAMPLE 命令。
- 如果是在命令行输入,可以用短名称 LM EXAMPLE 也是一样的效果。代码中建议用长名称。
- 对于纯模块而言,也可以在加载模块时提供参数:
- load-module EXAMPLE { {foo}{value1} {bar}{value2} }
- 参数会传送给 EXAMPLE[config] 变量,供模块使用。
- */
- #nop 模块元信息描述。;
- #nop 如果不提供这个变量,则称为「弱模块」。;
- #nop 如果提供了这个变量,并设计了 EXAMPLE.Run 别名,则称为「纯模块」。纯模块会有更多功能。;
- #nop 模块加载器会为纯模块自动生成 EXAMPLE.Start 和 EXAMPLE.Stop 两个方法。;
- #var EXAMPLE[META] {
- {NAME} {样板模块}
- {DESC} {本模块用来展示 PaoTin++ 的模块加载机制和模块书写规范。}
- {AUTHOR} {担子炮}
- {NOTE} {可以在这里写模块的使用注意事项或者版权声明等。}
- {CONFIG} {
- {foo} {模块配置参数1,前面是名称,后面写配置参数的说明,给人看的。}
- {bar} {模块配置参数2,可以按需扩展。}
- }
- };
- #nop 纯模块允许有一个 Init 函数,会在模块加载后自动调用。;
- #func {EXAMPLE.Init} {
- #nop load-module 时提供的参数最终会保存到 $EXAMPLE[config] 变量里,供插件使用。;
- #var EXAMPLE[config];
- okLog EXAMPLE 初始化中…;
- #nop Init 函数必须返回 true 以表示模块成功初始化。;
- #nop 如果返回别的值,则模块加载将会失败,已加载的部分也会被卸载。;
- #return true;
- };
- #nop 纯模块加载后默认处于禁用状态,必须调用 EXAMPLE.Start 后才会开始运行。;
- #nop EXAMPLE.Start 方法会调用一次 EXAMPLE.Run 方法,用户可以在这里驱动模块事件循环;
- #alias {EXAMPLE.Run} {
- #nop xxxLog 可以用来输出日志。;
- #nop 系统预定义的日志有 infoLog errLog okLog warnLog dbgLog mudLog;
- #nop 每种不同的 Log 文件会存放在单独的文件中。;
- #nop 你也可以自定义自己的日志,比如叫 myjobLog 也是可以的,会自动生成 myjob.log 文件。;
- okLog Hello, I'm a pure PaoTin++ module, My name is EXAMPLE.;
- #nop xtt.Tick 类似于 #tick,但是会立即运行一次定时器。;
- xtt.Tick {EXAMPLE.timer} {EXAMPLE.Test} 10;
- };
- #nop 纯模块也可以通过 EXAMPLE.Stop 来停止运行。停止运行的纯模块就像是尚未加载一样,不会对系统其它部分产生任何影响。;
- #nop 你也可以用 EXAMPLE.Start 来再次运行本模块,系统会继续之前 Stop 时保存的状态,包括变量和触发都不会丢失。;
- #alias {EXAMPLE.Pause} {
- okLog EXAMPLE 暂停运行。;
- };
- #nop 纯模块也可以自定义方法。自定义的方法如果是以大写字母开头,并且仅由字母和数字组成,会自动支持命令行补全;
- #alias {EXAMPLE.Test} {
- warnLog EXAMPLE.Test 执行一次。;
- #showme {测试触发1};
- #showme {测试触发2};
- };
- #nop 无论是纯模块,还是弱模块,都有几个预定义的变量可供插件使用。;
- #nop 下面演示 $ID 变量的用法。;
- #action {^测试触发1$ID$} {
- #echo {可以看到,本触发具有一个由模块名标识构成的唯一 ID,因此不会和别的模块冲突。};
- #action {%*测试触发%*};
- infoLog 触发1成功。;
- };
- #nop 一般建议 $ID 放在末尾。如果 $ID 和末尾锚定符号 $ 连用,那么也可以简写成 $E,效果相同;
- #action {^测试触发2$E} {
- infoLog 触发2成功。;
- };
|