option.tin 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #var lib_option[META] {
  2. {NAME} {全局选项管理}
  3. {DESC} {为全局选项提供了一个储存位置,并提供一些实用的 API。}
  4. {AUTHOR} {担子炮}
  5. };
  6. #function {lib_option.Init} {
  7. #var gOptions {};
  8. #return {true};
  9. };
  10. #alias {option.Define} {
  11. #local option {%1};
  12. #local type {%2};
  13. #local meaning {%3};
  14. #local default {%4};
  15. #if { "$gOptions[$option]" != "" } {
  16. errLog 选项「$option」已存在,请检查代码。;
  17. #return;
  18. };
  19. #local types {Bool};
  20. #if { "$type" != "{$types}" } {
  21. errLog 不能识别的选项类型: 「$type」,目前仅支持选项类型:{$types};
  22. #return;
  23. };
  24. #if { "$type" == "Bool" && "$default" != "{true|false}" } {
  25. errLog Bool 型的选项值只能是 true 或者 false。;
  26. #return;
  27. };
  28. #var gOptions[$option] {
  29. {name} {$option}
  30. {type} {$type}
  31. {meaning} {$meaning}
  32. {value} {$default}
  33. };
  34. };
  35. #alias {option.List} {
  36. #echo {};
  37. #echo {<128>%+20s %+10s %+30s %+20s} {选项名称} {选项类型} {选项含义} {选项当前值};
  38. #draw Yellow scroll line 1 1 1 83;
  39. #local option {};
  40. #foreach {*gOptions[]} {option} {
  41. #echo {%+20s %+10s %+30s %+20s}
  42. {$gOptions[$option][name]}
  43. {$gOptions[$option][type]}
  44. {$gOptions[$option][meaning]}
  45. {$gOptions[$option][value]};
  46. };
  47. #echo {};
  48. };
  49. #function {option.Get} {
  50. #local {option} {%1};
  51. #if { "$gOptions[$option]" == "" } {
  52. errLog 不存在选项「$option」,请先定义后再使用。;
  53. #return {};
  54. };
  55. #return {$gOptions[$option][value]};
  56. };
  57. #function {option.Set} {
  58. #local {option} {%1};
  59. #local {value} {%2};
  60. #local old {$xttOptions[$option]};
  61. #if { "$old" == "" } {
  62. errLog 不存在选项「$option」,请先定义后再使用。;
  63. #return {};
  64. };
  65. #var {gOptions[$option][value]} {$value};
  66. #return {$old};
  67. };
  68. #function {option.IsEnable} {
  69. #local option {%1};
  70. #local value {@option.Get{$option}};
  71. #if { "$value" == "true" } {
  72. #return 1;
  73. };
  74. #else {
  75. #return 0;
  76. };
  77. };
  78. #function {option.IsDisable} {
  79. #local option {%1};
  80. #local value {@option.Get{$option}};
  81. #if { "$value" == "false" } {
  82. #return 1;
  83. };
  84. #else {
  85. #return 0;
  86. };
  87. };
  88. #alias {option.Set} {
  89. #local {option} {%1};
  90. #local {value} {%2};
  91. #local _ {@option.Set{$option;{$value}}};
  92. };
  93. #function {option.Toggle} {
  94. #local {option} {%1};
  95. #local value {@option.Get{$option}};
  96. #if { "$value" == "true" } {
  97. option.Disable $option;
  98. infoLog <160>选项「<130>$option<160>」 <110>已禁用。<070>;
  99. };
  100. #elseif { "$value" == "false" } {
  101. option.Enable $option;
  102. infoLog <160>选项「<130>$option<160>」 <120>已启用。<070>;
  103. };
  104. #return {$value};
  105. };
  106. #alias {option.Toggle} {
  107. #local {option} {%1};
  108. #local _ {@option.Toggle{$option}};
  109. };
  110. #alias {option.Enable} {
  111. #local {option} {%1};
  112. option.Set $option {true};
  113. };
  114. #alias {option.Disable} {
  115. #local {option} {%1};
  116. option.Set $option {false};
  117. };