北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 50|回复: 1

写lua的新姿势,用TypeScript转

[复制链接]
发表于 前天 12:55 PM | 显示全部楼层 |阅读模式
昨天拿我的代码转了下,可以用,开始补单元测试了。

https://github.com/hellclient-scripts/hellmapmanager.ts

终于不用折腾下标,table,冒号了。

TypeScript毕竟是一门现代语言。

就是转出来的代码有点难看,管他呢,我反正不看。

  1. ["src.utils.controlcode.controlcode"] = function(...)
  2. local ____lualib = require("lualib_bundle")
  3. local __TS__Class = ____lualib.__TS__Class
  4. local __TS__New = ____lualib.__TS__New
  5. local __TS__StringReplaceAll = ____lualib.__TS__StringReplaceAll
  6. local ____exports = {}
  7. ____exports.Command = __TS__Class()
  8. local Command = ____exports.Command
  9. Command.name = "Command"
  10. function Command.prototype.____constructor(self, raw, rawcode, escaped)
  11.     self.Raw = raw
  12.     self.EncodedCode = ____exports.ControlCode:EncodeCommand(rawcode)
  13.     self.Escaped = escaped
  14.     self.Encoded = ____exports.ControlCode:PreEscape(raw)
  15. end
  16. function Command.New(self, raw, rawcode, escaped)
  17.     return __TS__New(____exports.Command, raw, rawcode, escaped)
  18. end
  19. ____exports.ControlCode = __TS__Class()
  20. local ControlCode = ____exports.ControlCode
  21. ControlCode.name = "ControlCode"
  22. function ControlCode.prototype.____constructor(self)
  23.     self.Commands = {}
  24. end
  25. function ControlCode.New(self)
  26.     return __TS__New(____exports.ControlCode)
  27. end
  28. function ControlCode.PreEscape(self, val)
  29.     return __TS__StringReplaceAll(
  30.         __TS__StringReplaceAll(
  31.             __TS__StringReplaceAll(val, ____exports.ControlCode.CodeEscape, ____exports.ControlCode.EncodedEscape),
  32.             ____exports.ControlCode.CodeEnd,
  33.             ____exports.ControlCode.EncodedEnd
  34.         ),
  35.         ____exports.ControlCode.CodeStart,
  36.         ____exports.ControlCode.EncodedStart
  37.     )
  38. end
  39. function ControlCode.PreUnescape(self, val)
  40.     return __TS__StringReplaceAll(
  41.         __TS__StringReplaceAll(
  42.             __TS__StringReplaceAll(val, ____exports.ControlCode.EncodedStart, ____exports.ControlCode.CodeStart),
  43.             ____exports.ControlCode.EncodedEnd,
  44.             ____exports.ControlCode.CodeEnd
  45.         ),
  46.         ____exports.ControlCode.EncodedEscape,
  47.         ____exports.ControlCode.CodeEscape
  48.     )
  49. end
复制代码



真爽。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 前天 12:56 PM | 显示全部楼层
  1. export class Command {
  2.     constructor(raw: string, rawcode: string, escaped: string) {
  3.         this.Raw = raw;
  4.         this.EncodedCode = ControlCode.EncodeCommand(rawcode);
  5.         this.Escaped = escaped;
  6.         this.Encoded = ControlCode.PreEscape(raw);
  7.     }
  8.     static New(raw: string, rawcode: string, escaped: string): Command {
  9.         return new Command(raw, rawcode, escaped);
  10.     }
  11.     //转义后的字符
  12.     Escaped: string;
  13.     //编码后的控制代码
  14.     EncodedCode: string;
  15.     //原始字符
  16.     Raw: string;
  17.     //预处理后的字符,用于避免内部Token转换的问题
  18.     Encoded: string
  19. }
  20. export class ControlCode {
  21.     //指令开始字符
  22.     public static CodeStart: string = "\x02";
  23.     //指令结束字符
  24.     public static CodeEnd: string = "\x03";
  25.     //指令开始/结束转义字符
  26.     public static CodeEscape: string = "\x04";
  27.     public static EncodedEscape: string = "\x04\x04";
  28.     public static EncodedStart: string = "\x04\x05";
  29.     public static EncodedEnd: string = "\x04\x06";
  30.     static New(): ControlCode {
  31.         return new ControlCode();
  32.     }
  33.     static PreEscape(val: string): string {
  34.         return val.replaceAll(ControlCode.CodeEscape, ControlCode.EncodedEscape).replaceAll(ControlCode.CodeEnd, ControlCode.EncodedEnd).replaceAll(ControlCode.CodeStart, ControlCode.EncodedStart);
  35.     }
  36.     public static PreUnescape(val: string): string {
  37.         return val.replaceAll(ControlCode.EncodedStart, ControlCode.CodeStart).replaceAll(ControlCode.EncodedEnd, ControlCode.CodeEnd).replaceAll(ControlCode.EncodedEscape, ControlCode.CodeEscape);
  38.     }
复制代码


对应的TypeScript代码

舒坦太多了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2025-6-6 09:35 AM , Processed in 0.012610 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表