title.tin 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #nop 【一代神相】江湖十大气血高手 牛肉面馆 总管事「绝对不是」天天练功 🐒 ☯️ (Marking);
  8. #nop 【 西 毒 】桃林书院 生员「喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵」挖煤猫 🐎 ⭕️ (Zardc);
  9. #nop 朱雀 辽东大侠 胡一刀(Hu yidao) [任务发放] ◆◆ <衣钵相承>;
  10. #nop 丐帮第八代帮主 萧峰(Xiao feng) [任务发放] ◆;
  11. #nop 大善人 韩员外(Han yuanwai) [任务发放];
  12. #nop 剑术神通「陷空洞中执九剑,能使龙池飞霹雳!」小小霹雳鼠 🗡(Xxpls);
  13. #nop 一品堂 供奉「大 爷 我 的 爱」护寺僧人 🦅 (Molia) <发呆一分钟>;
  14. #nop 大宗师 予人玫瑰 ★ 剑胆琴心★ 「语多难寄一寸相思卿安否」黑袍人 🐅 🧡 (Heipao ren);
  15. #func {ParseTitle} {
  16. #local obj {%0};
  17. #nop 小技巧:replace 匹配之前不会将 &1~&99 清空,因此匹配可选项时会保留上一次的值。;
  18. #nop 所以这里手动清空一下;
  19. #local tmp {};
  20. #replace {tmp} {%s%s%s%s%s%s%s%s%s%s} {};
  21. #local rank {?:(?:【(.+?)】)?};
  22. #local title {?:(.*?)};
  23. #local nick {?:(?:「(.+?)」)?};
  24. #local name {?:(\p{Han}+)};
  25. #local emoji {?:( (?:(?:\p{So}\S*|🗡|🦅|🧡|🐅|🐒|🐎|⭕️|🐍|🙊|🐓) ?)+)?};
  26. #local id {?:\(([A-Z][a-z']+(?: [a-z]+)*)\)};
  27. #local status1 {?:(?: <(.*?)>)?};
  28. #local status2 {?:(?: \[(.*?)\])?};
  29. #local isJobNPC {?:(?: ((?:◆)+))?};
  30. #local yibo {?:(?: <(衣钵相承)>)?};
  31. #replace {obj} {{*UTF8}{?:^}{$rank}{$title}{$nick}{$name}{$emoji}{$id}{$emoji}{$status1}{$status2}{$isJobNPC}{$yibo}$} {
  32. {rank} {@str.Trim{&1}}
  33. {title} {@str.Trim{&2}}
  34. {nick} {@str.Trim{&3}}
  35. {name} {&4}
  36. {emoji} {@str.Trim{&5}}
  37. {id} {@str.ToLower{&6}}
  38. {status1} {&7}
  39. {status2} {&8}
  40. {isJobNPC} {&9}
  41. {yibo} {&10}
  42. };
  43. #nop 注意 #replace 刚替换完时,得到的是字符串,最后还要再进行一次赋值,才能够将它结构化;
  44. #local obj {$obj};
  45. #if { "$obj[name]" == "" } {
  46. #return {};
  47. };
  48. #if { "$obj[title]" == "☆%S%s%S☆" } {
  49. #local partyInfo {$obj[title]};
  50. #replace partyInfo {^☆%S%s%S☆$} {{party}{&1}{partyRank}{&3}};
  51. #local partyInfo {$partyInfo};
  52. #local obj[title] {$partyInfo[party];$partyInfo[partyRank]};
  53. #local obj[party] {$partyInfo[party]};
  54. #local obj[partyRank] {$partyInfo[partyRank]};
  55. };
  56. #replace obj[title] {%+1..s} {;};
  57. #replace obj[emoji] {%+1..s} {;};
  58. #replace obj[rank] {%+1..s} {};
  59. #local field {};
  60. #foreach {rank;title;nick;name;emoji;id;status1;status2;isJobNPC;yibo} {field} {
  61. #if { "$obj[$field]" == "" } {
  62. #unlocal obj[$field];
  63. };
  64. };
  65. #return {$obj};
  66. };