浏览代码

refactor: 重构代码,把所有的 #function 都改写成 #func

dzp 3 年之前
父节点
当前提交
efbbce92b9

+ 1 - 1
framework/log.tin

@@ -21,7 +21,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 
 #var gLog[PATH]     {log};
 
-#function {InitLog} {
+#func {InitLog} {
     #local path {%1};
 
     #local output {};

+ 7 - 7
framework/utils.tin

@@ -10,7 +10,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 ===========
 */
 
-#function {existsAlias} {
+#func {existsAlias} {
     #local pName     {%1};
     #local pClass    {%2};
 
@@ -29,7 +29,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {false};
 };
 
-#function {existsFunction} {
+#func {existsFunction} {
     #local pName    {%1};
     #local pClass   {%2};
 
@@ -48,31 +48,31 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {false};
 };
 
-#function {existsFile} {
+#func {existsFile} {
     #local file {%1};
     #local output {};
     #script output {test -f $file && echo true || test -f var/$file && echo true || echo false};
     #return $output[1];
 };
 
-#function {existsJobPlugin} {
+#func {existsJobPlugin} {
     #local job {%1};
     #return {@existsPlugin{job/$job}};
 };
 
-#function {existsPlugin} {
+#func {existsPlugin} {
     #local plugin {%1};
     #return {@existsFile{plugins/$plugin.tin}};
 };
 
-#function {mkdir} {
+#func {mkdir} {
     #local dir {%1};
     #local output {};
     #script output {mkdir -p $dir 2>/dev/null && test -d $dir && echo true || echo false};
     #return $output[1];
 };
 
-#function {uuid} {
+#func {uuid} {
     #local now      {};
     #local random   {};
 

+ 1 - 1
mud/pkuxkx/plugins/basic/char/gmcp.tin

@@ -23,7 +23,7 @@ event.Define {char/nobusy}  {无参} {$MODULE} {角色解除 busy 了};
 event.Define {char/fight}   {无参} {$MODULE} {角色战斗开始};
 event.Define {char/nofight} {无参} {$MODULE} {角色脱离战斗};
 
-#function {basic_char_gmcp.Init} {
+#func {basic_char_gmcp.Init} {
     event.Handle {GMCP.Status} {char/gmcp} {basic/char/gmcp} {char.gmcp.status};
 };
 

+ 3 - 3
mud/pkuxkx/plugins/basic/char/hp.tin

@@ -21,7 +21,7 @@ load-lib speedo;
 event.Define {char/hp}       {无参}  {$MODULE} {已经获取到 hp 命令输出结果,并更新 char[HP]。};
 event.Define {char/hpbrief}  {无参}  {$MODULE} {已经获取到 hpbrief 命令输出结果,并更新 char[HP]。};
 
-#function {basic_char_hp.Init} {
+#func {basic_char_hp.Init} {
     #class data/basic/char open;
     #var char[HP]           {};
     #var char[HP][经验]     {};
@@ -403,7 +403,7 @@ hp -neili 格式:
     #showme $summarize;
 };
 
-#function {__char_hp_expandBigNumber__} {
+#func {__char_hp_expandBigNumber__} {
     #local number {%1};
     #replace number {K} {*1000};
     #replace number {M} {*1000000};
@@ -411,7 +411,7 @@ hp -neili 格式:
     #return $number;
 };
 
-#function {__char_hp_colorit__} {
+#func {__char_hp_colorit__} {
     #local p {%1};
     #if { $p < 15 } {
         #return {<010>$p%<070>};

+ 1 - 1
mud/pkuxkx/plugins/basic/char/i2.tin

@@ -26,7 +26,7 @@
 #nop 锦囊(Jin nang)
 #nop;
 
-#function {basic_char_i2.Init} {
+#func {basic_char_i2.Init} {
     char.reset.i2;
     char.reset.bag;
     char.reset.sachet;

+ 1 - 1
mud/pkuxkx/plugins/basic/char/jifa.tin

@@ -28,7 +28,7 @@ load-lib event;
 
 event.Define {char/jifa}    {无参}  {$MODULE} {已经获取到 jifa/enable 命令输出结果,并更新 char[Skills]。};
 
-#function {basic_char_jifa.Init} {
+#func {basic_char_jifa.Init} {
     #return true;
 };
 

+ 1 - 1
mud/pkuxkx/plugins/basic/char/sachet.tin

@@ -67,7 +67,7 @@
     #class char-parse-sachet close;
 };
 
-#function {__char_sachet_parse__} {
+#func {__char_sachet_parse__} {
     #local item {%1};
 
     #replace {item} {[%S]%*{☆|★|◎}%**%d} {

+ 2 - 2
mud/pkuxkx/plugins/basic/char/skills.tin

@@ -39,7 +39,7 @@ load-lib event;
 event.Define {char/skills}  {无参}  {$MODULE} {已经获取到 skills 命令输出结果,并更新 char[Skills]。};
 event.Define {char/skbrief} {无参}  {$MODULE} {已经获取到 skbrief 命令输出结果,并更新 char[Skills]。};
 
-#function {basic_char_skills.Init} {
+#func {basic_char_skills.Init} {
     #class data/basic/char open;
     #var char[Skills] {};
     #class data/basic/char close;
@@ -191,7 +191,7 @@ event.Define {char/skbrief} {无参}  {$MODULE} {已经获取到 skbrief 命令
     #class {ParseSkills} close;
 };
 
-#function {__char_skills_colorit__} {
+#func {__char_skills_colorit__} {
     #local code     {%1};
     #local level    {%2};
     #local limit    {%3};

+ 1 - 1
mud/pkuxkx/plugins/basic/cmds/jobquery.tin

@@ -41,7 +41,7 @@ jobquery 本来就有两个别名:
 #alias {^jobquery{| %*}$}  {job.Query gag   {%1}};
 #alias {^jq{| %*}$}        {job.Query nogag {%1}};
 
-#function {basic_cmds_jobquery.Init} {
+#func {basic_cmds_jobquery.Init} {
     #class data/basic/cmds/jobquery open;
     #var gJobState {};
     #var gJobStateUpdate {0};

+ 1 - 1
mud/pkuxkx/plugins/basic/title.tin

@@ -6,7 +6,7 @@
 #nop             剑术神通「陷空洞中执九剑,能使龙池飞霹雳!」小小霹雳鼠 🗡(Xxpls);
 #nop             一品堂 供奉「大 爷 我 的 爱」护寺僧人 🦅 (Molia) <发呆一分钟>;
 #nop             大宗师 予人玫瑰 ★ 剑胆琴心★  「语多难寄一寸相思卿安否」黑袍人 🐅 🧡 (Heipao ren);
-#function {ParseTitle} {
+#func {ParseTitle} {
     #local obj {%0};
 
     #nop 小技巧:replace 匹配之前不会将 &1~&99 清空,因此匹配可选项时会保留上一次的值。;

+ 1 - 1
mud/pkuxkx/plugins/lib/ui/chat.tin

@@ -16,7 +16,7 @@
     {{pattern}{%*}                          {action}{groupLog}      {gag}{true}}
 };
 
-#function {lib_ui_chat.Init} {
+#func {lib_ui_chat.Init} {
     load-file {etc/ui-chat.tin};
     #return true;
 };

+ 1 - 1
plugins/EXAMPLE.tin

@@ -26,7 +26,7 @@
 };
 
 #nop 纯模块允许有一个 Init 函数,会在模块加载后自动调用。;
-#function {EXAMPLE.Init} {
+#func {EXAMPLE.Init} {
     #nop load-module 时提供的参数最终会保存到 $EXAMPLE[config] 变量里,供插件使用。;
     #var EXAMPLE[config];
     okLog EXAMPLE 初始化中…;

+ 2 - 2
plugins/lib/event.tin

@@ -15,7 +15,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     {NOTE}      {本文件属于 PaoTin++ 的一部分}
 };
 
-#function {lib_event.Init} {
+#func {lib_event.Init} {
     #class data/lib/event open;
     #var gEventHandlers {};
     #var gValidEvent    {};
@@ -24,7 +24,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return true;
 };
 
-#function {__xtt_event_name_is_valid__} {
+#func {__xtt_event_name_is_valid__} {
     #local name {%1};
     #if { "$name" == "{[_a-zA-Z]([./_a-zA-Z0-9-]*[./_a-zA-Z0-9])?}" } {
         #return {true};

+ 1 - 1
plugins/lib/ga.tin

@@ -17,7 +17,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 
 #config {IAC GA} {ON};
 
-#function {lib_ga.Init} {
+#func {lib_ga.Init} {
     #class data/lib/ga open;
     #list gXttPipeLine create {};
     #class data/lib/ga close;

+ 6 - 6
plugins/lib/option.tin

@@ -12,7 +12,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     {AUTHOR}    {担子炮}
 };
 
-#function {lib_option.Init} {
+#func {lib_option.Init} {
     #class lib/option open;
     #var gOptions {};
     #class lib/option close;
@@ -65,7 +65,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #echo {};
 };
 
-#function {option.Get} {
+#func {option.Get} {
     #local {option} {%1};
 
     #if { "$gOptions[$option]" == "" } {
@@ -76,7 +76,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$gOptions[$option][value]};
 };
 
-#function {option.Set} {
+#func {option.Set} {
     #local {option} {%1};
     #local {value}  {%2};
 
@@ -91,7 +91,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$old};
 };
 
-#function {option.IsEnable} {
+#func {option.IsEnable} {
     #local option {%1};
     #local value {@option.Get{$option}};
     #if { "$value" == "true" } {
@@ -102,7 +102,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     };
 };
 
-#function {option.IsDisable} {
+#func {option.IsDisable} {
     #local option {%1};
     #local value {@option.Get{$option}};
     #if { "$value" == "false" } {
@@ -120,7 +120,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #local _ {@option.Set{$option;{$value}}};
 };
 
-#function {option.Toggle} {
+#func {option.Toggle} {
     #local {option} {%1};
 
     #local value {@option.Get{$option}};

+ 4 - 4
plugins/lib/speedo.tin

@@ -12,7 +12,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     {AUTHOR}    {担子炮}
 };
 
-#function {lib_speedo.Init} {
+#func {lib_speedo.Init} {
     #var gSpeedo {};
     #return {true};
 };
@@ -74,7 +74,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #var {gSpeedo[$key][update]}    {$now};
 };
 
-#function {speedo.Get} {
+#func {speedo.Get} {
     #local key {%1};
 
     #if { @isEmpty{$key} } {
@@ -93,7 +93,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$gSpeedo[$key][update]};
 };
 
-#function {speedo.GetSpeed} {
+#func {speedo.GetSpeed} {
     #local key      {%1};
     #local interval {%2};
 
@@ -105,7 +105,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$speedInfo[speed]};
 };
 
-#function {speedo.GetSpeedInfo} {
+#func {speedo.GetSpeedInfo} {
     #local key      {%1};
     #local interval {@defaultInt{%2;1}};
 

+ 1 - 1
plugins/lib/storage.tin

@@ -12,7 +12,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     {AUTHOR}    {担子炮}
 };
 
-#function {lib_storage.Init} {
+#func {lib_storage.Init} {
     #local _ {@mkdir{data}};
     #return {true};
 };

+ 2 - 2
plugins/lib/ui/beautify.tin

@@ -4,7 +4,7 @@
     {AUTHOR}    {担子炮}
 };
 
-#function {lib_ui_beautify.Init} {
+#func {lib_ui_beautify.Init} {
     #class data/lib/ui/beautify open;
     #var beautify-switch {OFF};
     #var beautify-eol-mark {<g03>.};
@@ -87,7 +87,7 @@
     prompt.refresh;
 };
 
-#function {Beautify} {
+#func {Beautify} {
     #local text {%1};
 
     #if { "${beautify-switch}" != "ON" } {

+ 5 - 5
plugins/lib/ui/prompt.tin

@@ -144,7 +144,7 @@ tt++ table 由一组选项和与之对应的选项值来组成,用来说明想
 #nop 提示符;
 #var prompt-prompt {Input};
 
-#function {lib_ui_prompt.Init} {
+#func {lib_ui_prompt.Init} {
     load-file {etc/ui-settings.tin};
     prompt.Set {};
     prompt.bindKey;
@@ -390,7 +390,7 @@ tt++ table 由一组选项和与之对应的选项值来组成,用来说明想
     };
 };
 
-#function {__prompt_build_line__} {
+#func {__prompt_build_line__} {
     #local fields       {%1};
     #local text         {};
     #local order        {};
@@ -492,7 +492,7 @@ tt++ table 由一组选项和与之对应的选项值来组成,用来说明想
     #return {{width}{$lineWidth}{text}{$text}};
 };
 
-#function {__prompt_countdown__} {
+#func {__prompt_countdown__} {
     #local value    {%1};
     #local count    {%2};
 
@@ -504,7 +504,7 @@ tt++ table 由一组选项和与之对应的选项值来组成,用来说明想
     #return {$value};
 };
 
-#function {__prompt_show_countdown__} {
+#func {__prompt_show_countdown__} {
     #local type     {%1};
     #local secs     {%2};
     #local ret      {};
@@ -540,7 +540,7 @@ tt++ table 由一组选项和与之对应的选项值来组成,用来说明想
     #return {$ret};
 };
 
-#function {__prompt_fill_line__} {
+#func {__prompt_fill_line__} {
     #local text     {%1};
     #local width    {%2};
     #local color    {%3};

+ 5 - 5
plugins/lib/ui/tmux.tin

@@ -15,7 +15,7 @@
 #nop 当前展示的边框样式的 theme。;
 #var tmux-theme {};
 
-#function {lib_ui_tmux.Init} {
+#func {lib_ui_tmux.Init} {
     #if { "@mkdir{{tmux/$user[id]}}" == "false" } {
         errLog 创建 tmux UI 通信管道(tmux/$user[id])失败;
     };
@@ -90,11 +90,11 @@
     #script {tmp} {tmux refresh};
 };
 
-#function {TMUX} {
+#func {TMUX} {
     #return {@tmux.ConvertFromANSI{{%1}}};
 };
 
-#function {tmux.ConvertFromANSI} {
+#func {tmux.ConvertFromANSI} {
     #local text {%1};
 
     #replace {text} {{\e\[(3|4)8;5;(\d+)m}}                 {@tmux.ansi2tmux{&2;5;&3}};
@@ -162,7 +162,7 @@
     #return {$output#[default]};
 };
 
-#function {tmux.ansi2tmux} {
+#func {tmux.ansi2tmux} {
     #local {type} {%1};
     #local {mode} {%2};
     #local {arg1} {%3};
@@ -198,7 +198,7 @@
     #return {$output};
 };
 
-#function {tmux.Width} {
+#func {tmux.Width} {
     #local arg {%1};
     #replace {arg} {{#\[[^\]]*\]}} {};
     #return {@len{{$arg}}};

+ 6 - 6
plugins/lib/xtintin/default.tin

@@ -1,5 +1,5 @@
 #nop 字符串默认值;
-#function {default} {
+#func {default} {
     #local value    {%1};
     #local default  {%2};
 
@@ -11,7 +11,7 @@
 };
 
 #nop 整数默认值;
-#function {defaultInt} {
+#func {defaultInt} {
     #local value    {%1};
     #local default  {%2};
 
@@ -28,7 +28,7 @@
 
 #nop 变量展开的时候,如果变量不存在会直接展开成 $var 形式的变量名自身,;
 #nop 这种情况下也允许用 default 值代替;
-#function {defaultVar} {
+#func {defaultVar} {
     #local value    {%1};
     #local default  {%2};
 
@@ -41,7 +41,7 @@
 
 #nop 变量展开的时候,如果变量不存在会直接展开成 $var 形式的变量名自身,;
 #nop 这种情况下也允许用 default 值代替;
-#function {defaultIntVar} {
+#func {defaultIntVar} {
     #local value    {%1};
     #local default  {%2};
 
@@ -57,7 +57,7 @@
 };
 
 #nop 判断参数是否为空;
-#function {isEmpty} {
+#func {isEmpty} {
     #local value {%0};
 
     #if { "$value" == "" } {
@@ -68,7 +68,7 @@
 };
 
 #nop 判断参数是否为空,或者变量展开失败;
-#function {isEmptyVar} {
+#func {isEmptyVar} {
     #local value {%0};
 
     #if { "$value" == "" } {

+ 1 - 1
plugins/lib/xtintin/diff.tin

@@ -1,5 +1,5 @@
 #nop 两个字符串参数,其中一个比另一个多包含了一个子串,本函数可返回该子串(即任务信息);
-#function {diff} {
+#func {diff} {
     #local str1 {%1};
     #local str2 {%2};
 

+ 2 - 2
plugins/lib/xtintin/doc.tin

@@ -77,7 +77,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #echo {%c%h} {light cyan};
 };
 
-#function {xtt.GenHelpDoc} {
+#func {xtt.GenHelpDoc} {
     #local args {%1};
 
     #if { "$args[check]" == "'XTinTinAPI" } {
@@ -149,7 +149,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 注意第二个 args 有两种写法,如果是函数就用键值对,如果是别名就用列表(前面加{1}{2}{3})。
 其中参数名用感叹号打头表示必选,问号打头表示可选,默认必选。
 */
-#function {xtt.HelpDoc} {
+#func {xtt.HelpDoc} {
     #local args {%1};
 
     #if { "$args[check]" == "'XTinTinAPI" } {

+ 4 - 4
plugins/lib/xtintin/fp.tin

@@ -6,7 +6,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
 */
 
-#function {filter} {
+#func {filter} {
     #local table {%1};
     #local cond {%2};
 
@@ -27,7 +27,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$newTable}
 };
 
-#function {filterMap} {
+#func {filterMap} {
     #local table {%1};
     #local cond {%2};
     #local body {%3};
@@ -52,7 +52,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$newTable}
 };
 
-#function {mapIf} {
+#func {mapIf} {
     #local table {%1};
     #local cond {%2};
     #local body {%3};
@@ -82,7 +82,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$newTable}
 };
 
-#function {map} {
+#func {map} {
     #local table {%1};
     #local body {%2};
 

+ 37 - 37
plugins/lib/xtintin/funcs.tin

@@ -8,7 +8,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 
 #nop ############################ 小工具-方向处理 #################################;
 
-#function {reverseCmds} {
+#func {reverseCmds} {
     #local cmds  {%1};
     #local newCmds {};
     #foreach {$cmds} {item} {
@@ -23,10 +23,10 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$newCmds};
 };
 
-#function {dirName}     { #return @convertDir{name; %1; %2}; };
-#function {shortDir}    { #return @convertDir{short; %1; %2}; };
-#function {longDir}     { #return @convertDir{long; %1; %2}; };
-#function {reverseDir}  {
+#func {dirName}     { #return @convertDir{name; %1; %2}; };
+#func {shortDir}    { #return @convertDir{short; %1; %2}; };
+#func {longDir}     { #return @convertDir{long; %1; %2}; };
+#func {reverseDir}  {
     #if { "%1" == "enter{| .*}" } {
         #return {out};
     };
@@ -85,7 +85,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     {enter}     {{name}{进去}   {short}{enter}  {long}{enter}   {reverse}{out}      }
 };
 
-#function {convertDir} {
+#func {convertDir} {
     #local field        {%1};
     #local dir          {%2};
     #local restricted   {%2};
@@ -106,7 +106,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 
 #nop ############################ 小工具-语法增强 #################################;
 
-#function {boolAnd} {
+#func {boolAnd} {
     #if { "%1" == "true" && "%2" == "true" } {
         #return {true};
     };
@@ -114,7 +114,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {false};
 };
 
-#function {reverseList} {
+#func {reverseList} {
     #var l {%1};
 
     #list {l} size len;
@@ -125,33 +125,33 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     };
 };
 
-#function {eval}            {#math result {%1}};
-#function {space}           {#var result {@repeat{%1;{ }}}};
-#function {repeat}          {#var result {}; #loop 1 %1 tmp {#var result {${result}%2}}};
-#function {string2list}     {#list result {create} {%1}};
-#function {list2string}     {#var l {%1}; #list l simplify; #return {$l}};
-#function {strListSize}     {#list l create {%1}; #list l size result};
-#function {indexOfStrList}  {#list l create {%1}; #list l find {%2} result};
-#function {indexOf}         {#var l {%1}; #list l find {%2} result};
-#function {trim}            {#format {result} {%p} {%1}};
-#function {trimAll}         {#var result {%1}; #replace {result} { } {}};
-#function {sort}            {#var l {%0}; #var result {}; #foreach {$l} {tmp} {#list result {sort} {$tmp}}; #return {@list2string{{$result}}}};
-#function {sortList}        {#var l {@list2string{{%0}}}; #var result {}; #foreach {$l} {tmp} {#list result {sort} {$tmp}}};
-#function {listSize}        {#var l {%1}; #list l size result};
-#function {listSet}         {#var l {%1}; #loc idx {%2}; #loc data {%3}; #var l @listExtend{{$l};$idx}; #list l set {$idx} {$data}; #return {$l} };
-#function {listExtend}      {#var l {%1}; #loc len {%2}; #loc size {@listSize{{$l}}}; #math len {$len - $size}; #if { $len > 0 } { #loop {1} {$len} {id} { #list l add {{}} } }; #return {$l} };
-#function {len}             {#format result {%L} {%1}};
-#function {toLower}         {#format result {%l} {%1}};
-#function {toUpper}         {#format result {%u} {%1}};
-#function {capital}         {#format result {%n} {%1}};
-#function {replace}         {#var result %1;#replace result {%2} {%3}};
-#function {inList}          {#math result { @indexOf{{%1};{%2}} > 0 }};
-#function {center}          {#format len {%L} {%1}; #math left {(%2 - $len) / 2 + $len}; #math right {%2 - $left}; #format result {%${left}s%${right}s} {%1} {}};
-
-#function {max}             {#var result {%1}; #foreach {%0} {i} {#if { $i > $result} { #var result {$i}}}};
-#function {min}             {#var result {%1}; #foreach {%0} {i} {#if { $i < $result} { #var result {$i}}}};
-
-#function {parseTime} {
+#func {eval}            {#math result {%1}};
+#func {space}           {#var result {@repeat{%1;{ }}}};
+#func {repeat}          {#var result {}; #loop 1 %1 tmp {#var result {${result}%2}}};
+#func {string2list}     {#list result {create} {%1}};
+#func {list2string}     {#var l {%1}; #list l simplify; #return {$l}};
+#func {strListSize}     {#list l create {%1}; #list l size result};
+#func {indexOfStrList}  {#list l create {%1}; #list l find {%2} result};
+#func {indexOf}         {#var l {%1}; #list l find {%2} result};
+#func {trim}            {#format {result} {%p} {%1}};
+#func {trimAll}         {#var result {%1}; #replace {result} { } {}};
+#func {sort}            {#var l {%0}; #var result {}; #foreach {$l} {tmp} {#list result {sort} {$tmp}}; #return {@list2string{{$result}}}};
+#func {sortList}        {#var l {@list2string{{%0}}}; #var result {}; #foreach {$l} {tmp} {#list result {sort} {$tmp}}};
+#func {listSize}        {#var l {%1}; #list l size result};
+#func {listSet}         {#var l {%1}; #loc idx {%2}; #loc data {%3}; #var l @listExtend{{$l};$idx}; #list l set {$idx} {$data}; #return {$l} };
+#func {listExtend}      {#var l {%1}; #loc len {%2}; #loc size {@listSize{{$l}}}; #math len {$len - $size}; #if { $len > 0 } { #loop {1} {$len} {id} { #list l add {{}} } }; #return {$l} };
+#func {len}             {#format result {%L} {%1}};
+#func {toLower}         {#format result {%l} {%1}};
+#func {toUpper}         {#format result {%u} {%1}};
+#func {capital}         {#format result {%n} {%1}};
+#func {replace}         {#var result %1;#replace result {%2} {%3}};
+#func {inList}          {#math result { @indexOf{{%1};{%2}} > 0 }};
+#func {center}          {#format len {%L} {%1}; #math left {(%2 - $len) / 2 + $len}; #math right {%2 - $left}; #format result {%${left}s%${right}s} {%1} {}};
+
+#func {max}             {#var result {%1}; #foreach {%0} {i} {#if { $i > $result} { #var result {$i}}}};
+#func {min}             {#var result {%1}; #foreach {%0} {i} {#if { $i < $result} { #var result {$i}}}};
+
+#func {parseTime} {
     #local {timeStr} {%1};
 
     #nop 注意这里用了个小技巧,末尾的空格不要去掉;
@@ -165,7 +165,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return {$time};
 };
 
-#function {c2d} {
+#func {c2d} {
     #local string {%1};
 
     #local number1  {};
@@ -229,7 +229,7 @@ PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #return $number;
 };
 
-#function {strWidth} {
+#func {strWidth} {
     #local str {%1};
     #replace {str} {<{[gG0-9A-Fa-f]{1,8}}>} {};
     #replace {str} {{\e\[[0-9;]+m}} {};

+ 2 - 2
plugins/lib/xtintin/mslp.tin

@@ -1,10 +1,10 @@
-#function {mslpExec} {
+#func {mslpExec} {
     #local exec {%1};
     #local text {%2};
     #return {\e]68;1;EXEC;$exec\a\e[4m$text\e[24m};
 };
 
-#function {mslpSend} {
+#func {mslpSend} {
     #local send {%1};
     #local text {%2};
     #return {\e]68;1;SEND;$send\a\e[4m$text\e[24m};