table.tin 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #nop 本文件是 xtintin 的一部分,实现了一些表格处理函数;
  8. ///=== {
  9. ///// 表格处理函数:
  10. //
  11. // #@ table.Keys <表格变量名> [<键名通配符>]
  12. // 提取表格中所有符合通配符的键名,结果以 slist 格式返回。
  13. // };
  14. #func {table.Keys} {
  15. #local table.local.table {%1};
  16. #local table.local.pattern {@default{%2;%*}};
  17. #local len {&{${table.local.table}[]}};
  18. #if { $len == 0 } {
  19. #return {};
  20. };
  21. #local keys {};
  22. #loop 1 {&{${table.local.table}[]}} {idx} {
  23. #local key {*{${table.local.table}[+$idx]}};
  24. #if { "$key" == "$table.local.pattern" } {
  25. #cat keys {*{${table.local.table}[+$idx]};};
  26. };
  27. };
  28. #replace {keys} {;$} {};
  29. #return {$keys};
  30. };
  31. ///=== {
  32. // #@ table.Values <表格变量名> [<值的通配符>]
  33. // 提取表格中所有符合通配符的值,结果以 slist 格式返回。
  34. // };
  35. #func {table.Values} {
  36. #local table.local.table {%1};
  37. #local table.local.pattern {@default{%2;%*}};
  38. #local len {&{${table.local.table}[]}};
  39. #if { $len == 0 } {
  40. #return {};
  41. };
  42. #local values {};
  43. #loop 1 {&{${table.local.table}[]}} {idx} {
  44. #local value {${${table.local.table}[+$idx]}};
  45. #if { "$value" == "$table.local.pattern" } {
  46. #cat values {${${table.local.table}[+$idx]};};
  47. };
  48. };
  49. #replace {values} {;$} {};
  50. #return {$values};
  51. };