storage.tin 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #var lib_storage[META] {
  8. {NAME} {通用存储引擎}
  9. {DESC} {可以存储和载入变量,这允许其它模块可以持久化自己的数据}
  10. {AUTHOR} {担子炮}
  11. };
  12. #func {lib_storage.Init} {
  13. #local _ {@mkdir{data}};
  14. #return {true};
  15. };
  16. #alias {storage.Save} {
  17. #local file {%1};
  18. #local vars {%2};
  19. #class comm-store-tmp open;
  20. #local var {};
  21. #foreach {$vars} {var} {
  22. #var {dump-$var} {${$var}};
  23. };
  24. #class comm-store-tmp close;
  25. #local files {};
  26. #line quiet #scan dir {var/data/} files;
  27. #if { &files[] > 0 } {
  28. #class comm-store-tmp write {var/data/${file}.tin};
  29. };
  30. #else {
  31. #class comm-store-tmp write {data/${file}.tin};
  32. };
  33. };
  34. #alias {storage.Load} {
  35. #local file {%1};
  36. #local vars {%2};
  37. #line quiet #class comm-store-tmp {assign} {load-file data/${file}.tin};
  38. #local var {};
  39. #foreach {$vars} {var} {
  40. #var {$var} {${dump-$var}};
  41. };
  42. #class comm-store-tmp kill;
  43. };