fp.tin 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #func {filter} {
  8. #local table {%1};
  9. #local cond {%2};
  10. #local key {};
  11. #local value {};
  12. #replace {cond} {KEY} {$$key};
  13. #replace {cond} {VALUE} {$$value};
  14. #local newTable {};
  15. #local key {};
  16. #foreach {*table[]} {key} {
  17. #local value {$table[$key]};
  18. #line sub var #if { $cond } {
  19. #cat newTable {{$key}{$value}};
  20. };
  21. };
  22. #return {$newTable}
  23. };
  24. #func {filterMap} {
  25. #local table {%1};
  26. #local cond {%2};
  27. #local body {%3};
  28. #local key {};
  29. #local value {};
  30. #replace {cond} {KEY} {$$key};
  31. #replace {cond} {VALUE} {$$value};
  32. #replace {body} {KEY} {$$key};
  33. #replace {body} {VALUE} {$$value};
  34. #local newTable {};
  35. #local key {};
  36. #foreach {*table[]} {key} {
  37. #local value {$table[$key]};
  38. #line sub var #if { $cond } {
  39. #cat newTable {{$key}{$body}};
  40. };
  41. };
  42. #return {$newTable}
  43. };
  44. #func {mapIf} {
  45. #local table {%1};
  46. #local cond {%2};
  47. #local body {%3};
  48. #local key {};
  49. #local value {};
  50. #replace {cond} {KEY} {$$key};
  51. #replace {cond} {VALUE} {$$value};
  52. #replace {body} {KEY} {$$key};
  53. #replace {body} {VALUE} {$$value};
  54. #local newTable {};
  55. #local key {};
  56. #foreach {*table[]} {key} {
  57. #local value {$table[$key]};
  58. #line sub var {
  59. #if { $cond } {
  60. #cat newTable {{$key}{$body}};
  61. };
  62. #else {
  63. #cat newTable {{$key}{$value}};
  64. };
  65. };
  66. };
  67. #return {$newTable}
  68. };
  69. #func {map} {
  70. #local table {%1};
  71. #local body {%2};
  72. #local key {};
  73. #local value {};
  74. #replace {body} {KEY} {$$key};
  75. #replace {body} {VALUE} {$$value};
  76. #local newTable {};
  77. #local key {};
  78. #foreach {*table[]} {key} {
  79. #local value {$table[$key]};
  80. #cat newTable {{$key}{$body}};
  81. };
  82. #return {$newTable}
  83. };