path.tin 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #func {dirName} { #return @convertDir{name; %1; %2}; };
  8. #func {shortDir} { #return @convertDir{short; %1; %2}; };
  9. #func {longDir} { #return @convertDir{long; %1; %2}; };
  10. #func {reverseDir} {
  11. #if { "%1" == "enter{| .*}" } {
  12. #return {out};
  13. };
  14. #else {
  15. #return @convertDir{reverse; %1; %2};
  16. };
  17. };
  18. #func {reverseCmds} {
  19. #local cmds {%0};
  20. #local newCmds {};
  21. #foreach {$cmds} {item} {
  22. #if { "$newCmds" == "" } {
  23. #local newCmds {@reverseDir{$item}};
  24. };
  25. #else {
  26. #format {newCmds} {%s;%s} {@reverseDir{$item}} {$newCmds};
  27. };
  28. };
  29. #return {$newCmds};
  30. };
  31. #var xtt.dir.table {
  32. {east} {{name}{正东} {short}{e} {long}{east} {reverse}{west} }
  33. {west} {{name}{正西} {short}{w} {long}{west} {reverse}{east} }
  34. {south} {{name}{正南} {short}{s} {long}{south} {reverse}{north} }
  35. {north} {{name}{正北} {short}{n} {long}{north} {reverse}{south} }
  36. {e} {{name}{正东} {short}{e} {long}{east} {reverse}{w} }
  37. {w} {{name}{正西} {short}{w} {long}{west} {reverse}{e} }
  38. {s} {{name}{正南} {short}{s} {long}{south} {reverse}{n} }
  39. {n} {{name}{正北} {short}{n} {long}{north} {reverse}{s} }
  40. {northeast} {{name}{东北} {short}{ne} {long}{northeast} {reverse}{southwest}}
  41. {southeast} {{name}{东南} {short}{se} {long}{southeast} {reverse}{northwest}}
  42. {northwest} {{name}{西北} {short}{nw} {long}{northwest} {reverse}{southeast}}
  43. {southwest} {{name}{西南} {short}{sw} {long}{southwest} {reverse}{northeast}}
  44. {ne} {{name}{东北} {short}{ne} {long}{northeast} {reverse}{sw} }
  45. {se} {{name}{东南} {short}{se} {long}{southeast} {reverse}{nw} }
  46. {nw} {{name}{西北} {short}{nw} {long}{northwest} {reverse}{se} }
  47. {sw} {{name}{西南} {short}{sw} {long}{southwest} {reverse}{ne} }
  48. {up} {{name}{正上} {short}{u} {long}{up} {reverse}{down} }
  49. {down} {{name}{正下} {short}{d} {long}{down} {reverse}{up} }
  50. {u} {{name}{正上} {short}{u} {long}{up} {reverse}{d} }
  51. {d} {{name}{正下} {short}{d} {long}{down} {reverse}{u} }
  52. {eastup} {{name}{东上} {short}{eu} {long}{eastup} {reverse}{westdown} }
  53. {westup} {{name}{西上} {short}{wu} {long}{westup} {reverse}{eastdown} }
  54. {southup} {{name}{南上} {short}{su} {long}{southup} {reverse}{northdown}}
  55. {northup} {{name}{北上} {short}{nu} {long}{northup} {reverse}{southdown}}
  56. {eu} {{name}{东上} {short}{eu} {long}{eastup} {reverse}{wd} }
  57. {wu} {{name}{西上} {short}{wu} {long}{westup} {reverse}{ed} }
  58. {su} {{name}{南上} {short}{su} {long}{southup} {reverse}{nd} }
  59. {nu} {{name}{北上} {short}{nu} {long}{northup} {reverse}{sd} }
  60. {eastdown} {{name}{东下} {short}{ed} {long}{eastdown} {reverse}{westup} }
  61. {westdown} {{name}{西下} {short}{wd} {long}{westdown} {reverse}{eastup} }
  62. {southdown} {{name}{南下} {short}{sd} {long}{southdown} {reverse}{northup} }
  63. {northdown} {{name}{北下} {short}{nd} {long}{northdown} {reverse}{southup} }
  64. {ed} {{name}{东下} {short}{ed} {long}{eastdown} {reverse}{wu} }
  65. {wd} {{name}{西下} {short}{wd} {long}{westdown} {reverse}{eu} }
  66. {sd} {{name}{南下} {short}{sd} {long}{southdown} {reverse}{nu} }
  67. {nd} {{name}{北下} {short}{nd} {long}{northdown} {reverse}{su} }
  68. {out} {{name}{出去} {short}{out} {long}{out} {reverse}{enter} }
  69. {enter} {{name}{进去} {short}{enter} {long}{enter} {reverse}{out} }
  70. };
  71. #func {convertDir} {
  72. #local field {%1};
  73. #local dir {%2};
  74. #local restricted {%2};
  75. #if { "$dir" == "" } {
  76. #return {};
  77. };
  78. #local entry ${xtt.dir.table[$dir]};
  79. #if { "$entry" == "" } {
  80. #if { @isTrue{$restricted} } {
  81. #return {};
  82. };
  83. #else {
  84. #return {$dir};
  85. };
  86. };
  87. #else {
  88. #return {$entry[$field]};
  89. };
  90. };