[{"data":1,"prerenderedAt":1468},["ShallowReactive",2],{"navigation_docs_zh_cn":3,"-zh-cn-pml-2-plugin-functions":75,"-zh-cn-pml-2-plugin-functions-surround":1463},[4,26],{"title":5,"path":6,"stem":7,"children":8,"page":25},"PML 2 插件开发指南","\u002Fzh_cn\u002Fpml-2-plugin","zh_cn\u002Fpml-2-plugin",[9,13,17,21],{"title":10,"path":11,"stem":12},"插件开发综述","\u002Fzh_cn\u002Fpml-2-plugin\u002Fintro","zh_cn\u002Fpml-2-plugin\u002F01.intro",{"title":14,"path":15,"stem":16},"插件系统埋点说明","\u002Fzh_cn\u002Fpml-2-plugin\u002Ftriggers","zh_cn\u002Fpml-2-plugin\u002F02.triggers",{"title":18,"path":19,"stem":20},"插件系统运算符说明","\u002Fzh_cn\u002Fpml-2-plugin\u002Foperators","zh_cn\u002Fpml-2-plugin\u002F03.operators",{"title":22,"path":23,"stem":24},"内置函数","\u002Fzh_cn\u002Fpml-2-plugin\u002Ffunctions","zh_cn\u002Fpml-2-plugin\u002F04.functions",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"PML 2","\u002Fzh_cn\u002Fpml-2","zh_cn\u002Fpml-2",[31,35,39,43,47,51,55,59,63,67,71],{"title":32,"path":33,"stem":34},"介绍 & 下载","\u002Fzh_cn\u002Fpml-2\u002Fintro","zh_cn\u002Fpml-2\u002F01.intro",{"title":36,"path":37,"stem":38},"安装","\u002Fzh_cn\u002Fpml-2\u002Finstall","zh_cn\u002Fpml-2\u002F02.install",{"title":40,"path":41,"stem":42},"用户指南","\u002Fzh_cn\u002Fpml-2\u002Fuser_guide","zh_cn\u002Fpml-2\u002F03.user_guide",{"title":44,"path":45,"stem":46},"故障排查","\u002Fzh_cn\u002Fpml-2\u002Ftroubleshooting","zh_cn\u002Fpml-2\u002F04.troubleshooting",{"title":48,"path":49,"stem":50},"配置文件","\u002Fzh_cn\u002Fpml-2\u002Fconfig","zh_cn\u002Fpml-2\u002F05.config",{"title":52,"path":53,"stem":54},"主题","\u002Fzh_cn\u002Fpml-2\u002Fthemes","zh_cn\u002Fpml-2\u002F06.themes",{"title":56,"path":57,"stem":58},"插件开发指南","\u002Fzh_cn\u002Fpml-2\u002Fplugin","zh_cn\u002Fpml-2\u002F07.plugin",{"title":60,"path":61,"stem":62},"PML 2 隐私政策","\u002Fzh_cn\u002Fpml-2\u002Fpolicy","zh_cn\u002Fpml-2\u002F08.policy",{"title":64,"path":65,"stem":66},"PML 2 用户协议","\u002Fzh_cn\u002Fpml-2\u002Fuser_agreement","zh_cn\u002Fpml-2\u002F09.user_agreement",{"title":68,"path":69,"stem":70},"DNS 提供商","\u002Fzh_cn\u002Fpml-2\u002Fdns_providers","zh_cn\u002Fpml-2\u002F10.dns_providers",{"title":72,"path":73,"stem":74},"遥测","\u002Fzh_cn\u002Fpml-2\u002Ftelemetry","zh_cn\u002Fpml-2\u002F11.telemetry",{"id":76,"title":22,"body":77,"description":1457,"extension":1458,"links":1459,"meta":1460,"navigation":1363,"path":23,"seo":1461,"stem":24,"__hash__":1462},"docs_zh_cn\u002Fzh_cn\u002Fpml-2-plugin\u002F04.functions.md",{"type":78,"value":79,"toc":1441},"minimark",[80,85,107,114,117,121,124,191,199,203,317,321,329,466,472,476,490,809,815,961,981,985,997,1062,1087,1091,1100,1234,1240,1244,1251,1437],[81,82,84],"h2",{"id":83},"一内置函数概述","一、内置函数概述",[86,87,88,89,93,94,97,98,102,103,106],"p",{},"函数库是 PML 2 插件系统的重要组成部分。在编写插件时, 你可以在",[90,91,92],"strong",{},"条件表达式","和",[90,95,96],{},"动作参数模板","中直接调用内置函数, 对 ",[99,100,101],"code",{},"ctx.data","、",[99,104,105],{},"ctx.variables"," 等上下文数据进行加工、计算与判断, 而无需编写任何代码。",[86,108,109,110,113],{},"内置函数由表达式求值器统一提供, 覆盖字符串与集合处理、数学运算、三角函数、日期时间操作等方面。函数名请统一使用",[90,111,112],{},"小写","书写, 参数按需取值, 支持字符串、数值与集合类型。",[86,115,116],{},"以下介绍中, 函数旁的版本标记表示该函数自对应版本及以上的 PML 2 中可用。请根据实际使用的 PML 2 版本选择合适的函数。",[118,119,120],"h3",{"id":120},"调用位置",[86,122,123],{},"内置函数可以出现在两类位置:",[125,126,127,143],"table",{},[128,129,130],"thead",{},[131,132,133,137,140],"tr",{},[134,135,136],"th",{},"位置",[134,138,139],{},"写法",[134,141,142],{},"示例",[144,145,146,171],"tbody",{},[131,147,148,156,166],{},[149,150,151,152,155],"td",{},"条件表达式 (",[99,153,154],{},"condition",")",[149,157,158,159,162,163],{},"直接书写表达式, ",[90,160,161],{},"不使用"," ",[99,164,165],{},"{{ }}",[149,167,168],{},[99,169,170],{},"len(ctx.data.proxyName) > 0 -and upper(ctx.data.proxyName) -eq 'WEB'",[131,172,173,179,186],{},[149,174,175,176,155],{},"动作参数模板 (",[99,177,178],{},"params",[149,180,181,182,185],{},"使用 ",[99,183,184],{},"{{ 表达式 }}"," 包裹, 一条字符串内可嵌入多个模板",[149,187,188],{},[99,189,190],{},"msg: \"隧道 {{ctx.data.proxyName}} 已启动 (长度 {{len(ctx.data.proxyName)}})\"",[192,193,194,195,198],"warning",{},"如果函数名未知, 或参数个数 \u002F 类型不合法, 表达式求值会抛出异常。插件引擎会将其记录为日志, ",[90,196,197],{},"不会导致应用崩溃",", 但该条触发器的本次执行会失败。请务必核对函数名与参数个数。",[81,200,202],{"id":201},"二内置函数分类","二、内置函数分类",[125,204,205,215],{},[128,206,207],{},[131,208,209,212],{},[134,210,211],{},"分类",[134,213,214],{},"函数",[144,216,217,236,279,304],{},[131,218,219,222],{},[149,220,221],{},"字符串与集合函数",[149,223,224,102,227,102,230,102,233],{},[99,225,226],{},"len",[99,228,229],{},"lower",[99,231,232],{},"upper",[99,234,235],{},"coalesce",[131,237,238,241],{},[149,239,240],{},"数学函数",[149,242,243,102,246,102,249,102,252,102,255,102,258,102,261,102,264,102,267,102,270,102,273,102,276],{},[99,244,245],{},"abs",[99,247,248],{},"round",[99,250,251],{},"floor",[99,253,254],{},"ceil",[99,256,257],{},"sqrt",[99,259,260],{},"pow",[99,262,263],{},"min",[99,265,266],{},"max",[99,268,269],{},"ln",[99,271,272],{},"log10",[99,274,275],{},"log2",[99,277,278],{},"log",[131,280,281,284],{},[149,282,283],{},"三角函数",[149,285,286,102,289,102,292,102,295,102,298,102,301],{},[99,287,288],{},"sin",[99,290,291],{},"cos",[99,293,294],{},"tan",[99,296,297],{},"cot",[99,299,300],{},"sec",[99,302,303],{},"csc",[131,305,306,309],{},[149,307,308],{},"日期时间函数",[149,310,311,102,314],{},[99,312,313],{},"now",[99,315,316],{},"datetime.now.strftime",[81,318,320],{"id":319},"三内置函数详细介绍","三、内置函数详细介绍",[118,322,324,325],{"id":323},"_1-字符串与集合函数-2631","1. 字符串与集合函数 ",[326,327,328],"badge",{},"26.3.1",[125,330,331,347],{},[128,332,333],{},[131,334,335,338,341,344],{},[134,336,337],{},"函数名",[134,339,340],{},"参数",[134,342,343],{},"描述",[134,345,346],{},"用例",[144,348,349,388,414,438],{},[131,350,351,356,362,373],{},[149,352,353],{},[99,354,355],{},"len(x)",[149,357,358,361],{},[99,359,360],{},"x",": 任意",[149,363,364,365,368,369,372],{},"返回长度或元素个数。",[99,366,367],{},"null"," 返回 ",[99,370,371],{},"0","; 字符串返回字符数; 集合返回元素个数; 其他类型返回其字符串表示的长度。",[149,374,375,368,378,381,384,387],{},[99,376,377],{},"len(\"abcd\")",[99,379,380],{},"4",[382,383],"br",{},[99,385,386],{},"len(ctx.variables.list)"," 返回集合元素个数",[131,389,390,395,400,406],{},[149,391,392],{},[99,393,394],{},"lower(s)",[149,396,397,361],{},[99,398,399],{},"s",[149,401,402,403,405],{},"转为字符串并转换为小写。",[99,404,367],{}," 返回空字符串。",[149,407,408,368,411],{},[99,409,410],{},"lower(\"Web\")",[99,412,413],{},"\"web\"",[131,415,416,421,425,430],{},[149,417,418],{},[99,419,420],{},"upper(s)",[149,422,423,361],{},[99,424,399],{},[149,426,427,428,405],{},"转为字符串并转换为大写。",[99,429,367],{},[149,431,432,368,435],{},[99,433,434],{},"upper(\"Web\")",[99,436,437],{},"\"WEB\"",[131,439,440,445,448,457],{},[149,441,442],{},[99,443,444],{},"coalesce(a, b, ...)",[149,446,447],{},"1 个及以上",[149,449,450,451,453,454,456],{},"返回第一个既不为 ",[99,452,367],{}," 也不为空字符串的参数; 若全部为空则返回 ",[99,455,367],{},"。常用于为缺失字段提供默认值。",[149,458,459,462,463],{},[99,460,461],{},"coalesce(ctx.data.errorCategory, \"timeout\")"," 在字段缺失时返回 ",[99,464,465],{},"\"timeout\"",[467,468,469,471],"tip",{},[99,470,226],{}," 对字符串与集合都有效, 因此可以用同一个函数判断隧道名长度或列表元素个数。",[118,473,475],{"id":474},"_2-数学函数","2. 数学函数",[86,477,478,102,480,482,483,485,486,489],{},[99,479,263],{},[99,481,266],{}," 自 ",[326,484,328],{}," 起可用, 其余数学函数自 ",[326,487,488],{},"26.5"," 起可用。所有数学函数都要求参数能解析为数值, 否则会抛出异常。",[125,491,492,504],{},[128,493,494],{},[131,495,496,498,500,502],{},[134,497,337],{},[134,499,340],{},[134,501,343],{},[134,503,346],{},[144,505,506,532,565,589,613,637,667,687,706,730,755,779],{},[131,507,508,513,518,524],{},[149,509,510],{},[99,511,512],{},"abs(x)",[149,514,515,517],{},[99,516,360],{},": 数值",[149,519,520,521,523],{},"返回 ",[99,522,360],{}," 的绝对值。",[149,525,526,368,529],{},[99,527,528],{},"abs(-5)",[99,530,531],{},"5",[131,533,534,539,543,550],{},[149,535,536],{},[99,537,538],{},"round(x)",[149,540,541,517],{},[99,542,360],{},[149,544,545,546,549],{},"返回四舍六入五成双的结果 (银行家舍入, 即 .NET 默认的 ",[99,547,548],{},"MidpointRounding.ToEven",")。",[149,551,552,368,555,557,559,368,562],{},[99,553,554],{},"round(4.5)",[99,556,380],{},[382,558],{},[99,560,561],{},"round(5.5)",[99,563,564],{},"6",[131,566,567,572,576,582],{},[149,568,569],{},[99,570,571],{},"floor(x)",[149,573,574,517],{},[99,575,360],{},[149,577,578,579,581],{},"返回小于或等于 ",[99,580,360],{}," 的最大整数。",[149,583,584,368,587],{},[99,585,586],{},"floor(4.9)",[99,588,380],{},[131,590,591,596,600,606],{},[149,592,593],{},[99,594,595],{},"ceil(x)",[149,597,598,517],{},[99,599,360],{},[149,601,602,603,605],{},"返回大于或等于 ",[99,604,360],{}," 的最小整数。",[149,607,608,368,611],{},[99,609,610],{},"ceil(4.2)",[99,612,531],{},[131,614,615,620,624,629],{},[149,616,617],{},[99,618,619],{},"sqrt(x)",[149,621,622,517],{},[99,623,360],{},[149,625,520,626,628],{},[99,627,360],{}," 的平方根。",[149,630,631,368,634],{},[99,632,633],{},"sqrt(9)",[99,635,636],{},"3",[131,638,639,644,651,659],{},[149,640,641],{},[99,642,643],{},"pow(x, y)",[149,645,646,102,648,517],{},[99,647,360],{},[99,649,650],{},"y",[149,652,520,653,655,656,658],{},[99,654,360],{}," 的 ",[99,657,650],{}," 次方。",[149,660,661,368,664],{},[99,662,663],{},"pow(2, 10)",[99,665,666],{},"1024",[131,668,669,674,677,680],{},[149,670,671],{},[99,672,673],{},"min(a, b, ...)",[149,675,676],{},"2 个及以上数值",[149,678,679],{},"返回最小值。",[149,681,682,368,685],{},[99,683,684],{},"min(3, 5)",[99,686,636],{},[131,688,689,694,696,699],{},[149,690,691],{},[99,692,693],{},"max(a, b, ...)",[149,695,676],{},[149,697,698],{},"返回最大值。",[149,700,701,368,704],{},[99,702,703],{},"max(3, 5)",[99,705,531],{},[131,707,708,713,717,723],{},[149,709,710],{},[99,711,712],{},"ln(x)",[149,714,715,517],{},[99,716,360],{},[149,718,719,720,549],{},"返回自然对数 (底数为 ",[99,721,722],{},"e",[149,724,725,368,728],{},[99,726,727],{},"ln(1)",[99,729,371],{},[131,731,732,737,741,747],{},[149,733,734],{},[99,735,736],{},"log10(x)",[149,738,739,517],{},[99,740,360],{},[149,742,743,744,549],{},"返回常用对数 (底数为 ",[99,745,746],{},"10",[149,748,749,368,752],{},[99,750,751],{},"log10(100)",[99,753,754],{},"2",[131,756,757,762,766,772],{},[149,758,759],{},[99,760,761],{},"log2(x)",[149,763,764,517],{},[99,765,360],{},[149,767,768,769,771],{},"返回底数为 ",[99,770,754],{}," 的对数。",[149,773,774,368,777],{},[99,775,776],{},"log2(8)",[99,778,636],{},[131,780,781,786,793,802],{},[149,782,783],{},[99,784,785],{},"log(x, base)",[149,787,788,102,790,517],{},[99,789,360],{},[99,791,792],{},"base",[149,794,795,796,798,799,801],{},"返回指定底数的对数, ",[99,797,792],{}," 必须大于 ",[99,800,371],{},"。",[149,803,804,368,807],{},[99,805,806],{},"log(8, 2)",[99,808,636],{},[118,810,812,813],{"id":811},"_3-三角函数-265","3. 三角函数 ",[326,814,488],{},[125,816,817,829],{},[128,818,819],{},[131,820,821,823,825,827],{},[134,822,337],{},[134,824,340],{},[134,826,343],{},[134,828,346],{},[144,830,831,852,874,895,917,939],{},[131,832,833,838,842,845],{},[149,834,835],{},[99,836,837],{},"sin(x)",[149,839,840,517],{},[99,841,360],{},[149,843,844],{},"返回正弦值。",[149,846,847,368,850],{},[99,848,849],{},"sin(0)",[99,851,371],{},[131,853,854,859,863,866],{},[149,855,856],{},[99,857,858],{},"cos(x)",[149,860,861,517],{},[99,862,360],{},[149,864,865],{},"返回余弦值。",[149,867,868,368,871],{},[99,869,870],{},"cos(0)",[99,872,873],{},"1",[131,875,876,881,885,888],{},[149,877,878],{},[99,879,880],{},"tan(x)",[149,882,883,517],{},[99,884,360],{},[149,886,887],{},"返回正切值。",[149,889,890,368,893],{},[99,891,892],{},"tan(0)",[99,894,371],{},[131,896,897,902,906,912],{},[149,898,899],{},[99,900,901],{},"cot(x)",[149,903,904,517],{},[99,905,360],{},[149,907,908,909,801],{},"返回余切值, 即 ",[99,910,911],{},"1 \u002F tan(x)",[149,913,914],{},[99,915,916],{},"cot(1)",[131,918,919,924,928,934],{},[149,920,921],{},[99,922,923],{},"sec(x)",[149,925,926,517],{},[99,927,360],{},[149,929,930,931,801],{},"返回正割值, 即 ",[99,932,933],{},"1 \u002F cos(x)",[149,935,936],{},[99,937,938],{},"sec(1)",[131,940,941,946,950,956],{},[149,942,943],{},[99,944,945],{},"csc(x)",[149,947,948,517],{},[99,949,360],{},[149,951,952,953,801],{},"返回余割值, 即 ",[99,954,955],{},"1 \u002F sin(x)",[149,957,958],{},[99,959,960],{},"csc(1)",[962,963,964,965,968,969,972,973,976,977,980],"note",{},"三角函数参数默认采用",[90,966,967],{},"角度制","。若第二个参数传入 ",[99,970,971],{},"\"true\"",", 会以",[90,974,975],{},"弧度制","进行计算。求值前会先把参数中的 ",[99,978,979],{},"\\pi"," 替换为圆周率 π 的数值, 便于书写含 π 的常量。",[118,982,984],{"id":983},"_4-日期时间函数","4. 日期时间函数",[86,986,987,482,989,991,992,482,994,996],{},[99,988,313],{},[326,990,328],{}," 起可用, ",[99,993,316],{},[326,995,488],{}," 起可用。",[125,998,999,1011],{},[128,1000,1001],{},[131,1002,1003,1005,1007,1009],{},[134,1004,337],{},[134,1006,340],{},[134,1008,343],{},[134,1010,346],{},[144,1012,1013,1032],{},[131,1014,1015,1019,1022,1025],{},[149,1016,1017],{},[99,1018,313],{},[149,1020,1021],{},"无",[149,1023,1024],{},"返回当前 UTC 时间的 Unix 时间戳 (秒)。",[149,1026,1027,368,1029],{},[99,1028,313],{},[99,1030,1031],{},"1759456000",[131,1033,1034,1039,1045,1054],{},[149,1035,1036],{},[99,1037,1038],{},"datetime.now.strftime(format)",[149,1040,1041,1044],{},[99,1042,1043],{},"format"," (可选): 字符串",[149,1046,1047,1048,1050,1051,801],{},"返回当前本地时间的格式化字符串; 省略 ",[99,1049,1043],{}," 时使用 ",[99,1052,1053],{},"yyyy-MM-dd HH:mm:ss",[149,1055,1056,368,1059],{},[99,1057,1058],{},"datetime.now.strftime(\"yyyy\u002FMM\u002Fdd\")",[99,1060,1061],{},"2026\u002F10\u002F03",[1063,1064,1065,1067,1068,1071,1072,1079,1080,1083,1084,1086],"caution",{},[99,1066,316],{}," 的名称虽然包含 ",[99,1069,1070],{},"strftime",", 但其格式化字符串遵循 .NET 的",[1073,1074,1078],"a",{"href":1075,"rel":1076},"https:\u002F\u002Flearn.microsoft.com\u002Fzh-cn\u002Fdotnet\u002Fstandard\u002Fbase-types\u002Fcustom-date-and-time-format-strings",[1077],"nofollow","自定义日期和时间格式字符串",", ",[90,1081,1082],{},"不是"," Python \u002F C 的 ",[99,1085,1070],{}," 语法。",[81,1088,1090],{"id":1089},"四算术运算符","四、算术运算符",[86,1092,1093,1094,1097,1098,996],{},"除了函数调用, PML 2 的表达式还支持算术运算, 并可用括号 ",[99,1095,1096],{},"()"," 改变优先级。算术运算符自 ",[326,1099,328],{},[125,1101,1102,1114],{},[128,1103,1104],{},[131,1105,1106,1109,1112],{},[134,1107,1108],{},"运算符",[134,1110,1111],{},"说明",[134,1113,142],{},[144,1115,1116,1131,1146,1161,1179,1196,1217],{},[131,1117,1118,1123,1126],{},[149,1119,1120],{},[99,1121,1122],{},"+",[149,1124,1125],{},"加法, 计算左右两边的和。",[149,1127,1128],{},[99,1129,1130],{},"ctx.variables.count + 5",[131,1132,1133,1138,1141],{},[149,1134,1135],{},[99,1136,1137],{},"-",[149,1139,1140],{},"减法, 计算左右两边的差。",[149,1142,1143],{},[99,1144,1145],{},"ctx.variables.count - 5",[131,1147,1148,1153,1156],{},[149,1149,1150],{},[99,1151,1152],{},"*",[149,1154,1155],{},"乘法, 计算左右两边的积。",[149,1157,1158],{},[99,1159,1160],{},"ctx.variables.count * 5",[131,1162,1163,1168,1171],{},[149,1164,1165],{},[99,1166,1167],{},"\u002F",[149,1169,1170],{},"除法, 计算左右两边的商 (浮点除法)。",[149,1172,1173,368,1176],{},[99,1174,1175],{},"5 \u002F 2",[99,1177,1178],{},"2.5",[131,1180,1181,1186,1189],{},[149,1182,1183],{},[99,1184,1185],{},"%",[149,1187,1188],{},"取模, 计算左右两边的余数。",[149,1190,1191,368,1194],{},[99,1192,1193],{},"7 % 3",[99,1195,873],{},[131,1197,1198,1207,1210],{},[149,1199,1200,1203,1204],{},[99,1201,1202],{},"**"," 或 ",[99,1205,1206],{},"^",[149,1208,1209],{},"幂运算, 计算左边的值的右边的值次方。",[149,1211,1212,368,1215],{},[99,1213,1214],{},"2 ** 10",[99,1216,666],{},[131,1218,1219,1224,1227],{},[149,1220,1221],{},[99,1222,1223],{},"\u002F\u002F",[149,1225,1226],{},"整除, 计算左右两边的商的向下取整。",[149,1228,1229,368,1232],{},[99,1230,1231],{},"7 \u002F\u002F 2",[99,1233,636],{},[962,1235,1236,1237,801],{},"算术运算符要求数值操作数; 若操作数为字符串, 会先尝试将其解析为数值, 解析失败则抛出异常。算术运算符与内置函数可以自由组合, 例如 ",[99,1238,1239],{},"max(len(ctx.data.proxyName), 3) * 2",[81,1241,1243],{"id":1242},"五完整示例","五、完整示例",[86,1245,1246,1247,1250],{},"以下示例摘自官方示例插件 ",[99,1248,1249],{},"tech.rycb.plugin.demo-functions.yaml",", 演示了内置函数与算术运算在条件表达式和动作参数模板中的用法:",[1252,1253,1258],"pre",{"className":1254,"code":1255,"language":1256,"meta":1257,"style":1257},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","triggers:\n  # 隧道名长度大于 0 且忽略大小写等于 web 时记录日志\n  - on: proxy.start\n    condition: \"len(ctx.data.proxyName) > 0 -and upper(ctx.data.proxyName) -eq 'WEB'\"\n    actions:\n      - name: log\n        params:\n          msg: \"隧道 {{ctx.data.proxyName}} 已启动 (名称长度 {{len(ctx.data.proxyName)}})\"\n\n  # 失败分类缺失时视为 timeout, 且重试次数不超过 3 次才通知\n  - on: proxy.failed\n    condition: \"coalesce(ctx.data.errorCategory, 'timeout') -eq 'timeout' -and min(ctx.variables.retryCount, 3) -le 3\"\n    actions:\n      - name: notify\n        params:\n          msg: \"隧道 {{ctx.data.proxyName}} 失败: {{ctx.data.errorMessage}}\"\n","yaml","",[99,1259,1260,1273,1280,1297,1313,1321,1335,1343,1358,1365,1371,1383,1397,1404,1416,1423],{"__ignoreMap":1257},[1261,1262,1265,1269],"span",{"class":1263,"line":1264},"line",1,[1261,1266,1268],{"class":1267},"swJcz","triggers",[1261,1270,1272],{"class":1271},"sMK4o",":\n",[1261,1274,1276],{"class":1263,"line":1275},2,[1261,1277,1279],{"class":1278},"sHwdD","  # 隧道名长度大于 0 且忽略大小写等于 web 时记录日志\n",[1261,1281,1283,1286,1290,1293],{"class":1263,"line":1282},3,[1261,1284,1285],{"class":1271},"  -",[1261,1287,1289],{"class":1288},"sfNiH"," on",[1261,1291,1292],{"class":1271},":",[1261,1294,1296],{"class":1295},"sfazB"," proxy.start\n",[1261,1298,1300,1303,1305,1308,1310],{"class":1263,"line":1299},4,[1261,1301,1302],{"class":1267},"    condition",[1261,1304,1292],{"class":1271},[1261,1306,1307],{"class":1271}," \"",[1261,1309,170],{"class":1295},[1261,1311,1312],{"class":1271},"\"\n",[1261,1314,1316,1319],{"class":1263,"line":1315},5,[1261,1317,1318],{"class":1267},"    actions",[1261,1320,1272],{"class":1271},[1261,1322,1324,1327,1330,1332],{"class":1263,"line":1323},6,[1261,1325,1326],{"class":1271},"      -",[1261,1328,1329],{"class":1267}," name",[1261,1331,1292],{"class":1271},[1261,1333,1334],{"class":1295}," log\n",[1261,1336,1338,1341],{"class":1263,"line":1337},7,[1261,1339,1340],{"class":1267},"        params",[1261,1342,1272],{"class":1271},[1261,1344,1346,1349,1351,1353,1356],{"class":1263,"line":1345},8,[1261,1347,1348],{"class":1267},"          msg",[1261,1350,1292],{"class":1271},[1261,1352,1307],{"class":1271},[1261,1354,1355],{"class":1295},"隧道 {{ctx.data.proxyName}} 已启动 (名称长度 {{len(ctx.data.proxyName)}})",[1261,1357,1312],{"class":1271},[1261,1359,1361],{"class":1263,"line":1360},9,[1261,1362,1364],{"emptyLinePlaceholder":1363},true,"\n",[1261,1366,1368],{"class":1263,"line":1367},10,[1261,1369,1370],{"class":1278},"  # 失败分类缺失时视为 timeout, 且重试次数不超过 3 次才通知\n",[1261,1372,1374,1376,1378,1380],{"class":1263,"line":1373},11,[1261,1375,1285],{"class":1271},[1261,1377,1289],{"class":1288},[1261,1379,1292],{"class":1271},[1261,1381,1382],{"class":1295}," proxy.failed\n",[1261,1384,1386,1388,1390,1392,1395],{"class":1263,"line":1385},12,[1261,1387,1302],{"class":1267},[1261,1389,1292],{"class":1271},[1261,1391,1307],{"class":1271},[1261,1393,1394],{"class":1295},"coalesce(ctx.data.errorCategory, 'timeout') -eq 'timeout' -and min(ctx.variables.retryCount, 3) -le 3",[1261,1396,1312],{"class":1271},[1261,1398,1400,1402],{"class":1263,"line":1399},13,[1261,1401,1318],{"class":1267},[1261,1403,1272],{"class":1271},[1261,1405,1407,1409,1411,1413],{"class":1263,"line":1406},14,[1261,1408,1326],{"class":1271},[1261,1410,1329],{"class":1267},[1261,1412,1292],{"class":1271},[1261,1414,1415],{"class":1295}," notify\n",[1261,1417,1419,1421],{"class":1263,"line":1418},15,[1261,1420,1340],{"class":1267},[1261,1422,1272],{"class":1271},[1261,1424,1426,1428,1430,1432,1435],{"class":1263,"line":1425},16,[1261,1427,1348],{"class":1267},[1261,1429,1292],{"class":1271},[1261,1431,1307],{"class":1271},[1261,1433,1434],{"class":1295},"隧道 {{ctx.data.proxyName}} 失败: {{ctx.data.errorMessage}}",[1261,1436,1312],{"class":1271},[1438,1439,1440],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1257,"searchDepth":1275,"depth":1275,"links":1442},[1443,1446,1447,1455,1456],{"id":83,"depth":1275,"text":84,"children":1444},[1445],{"id":120,"depth":1282,"text":120},{"id":201,"depth":1275,"text":202},{"id":319,"depth":1275,"text":320,"children":1448},[1449,1451,1452,1454],{"id":323,"depth":1282,"text":1450},"1. 字符串与集合函数 26.3.1",{"id":474,"depth":1282,"text":475},{"id":811,"depth":1282,"text":1453},"3. 三角函数 26.5",{"id":983,"depth":1282,"text":984},{"id":1089,"depth":1275,"text":1090},{"id":1242,"depth":1275,"text":1243},"本文将介绍 PML 2 插件系统中条件与动作模板可用的内置函数与算术运算符。","md",null,{},{"title":22,"description":1457},"pyTuIpeWDIY80ziEBCx7PRp1ByRg-8zMWx6PZrj6mNI",[1464,1466],{"title":18,"path":19,"stem":20,"description":1465,"children":-1},"本文档介绍 PML 2 插件系统的运算符。",{"title":32,"path":33,"stem":34,"description":1467,"children":-1},"PML 2是 ME Frp 的第三方客户端之一, 横跨多架构、多平台, 提供了简单便捷的操作, 可以快速启动隧道。",1791004264211]