jarlyyn 发表于 3 天前

写lua的新姿势,用TypeScript转

昨天拿我的代码转了下,可以用,开始补单元测试了。

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

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

TypeScript毕竟是一门现代语言。

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

["src.utils.controlcode.controlcode"] = function(...)
local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__New = ____lualib.__TS__New
local __TS__StringReplaceAll = ____lualib.__TS__StringReplaceAll
local ____exports = {}
____exports.Command = __TS__Class()
local Command = ____exports.Command
Command.name = "Command"
function Command.prototype.____constructor(self, raw, rawcode, escaped)
    self.Raw = raw
    self.EncodedCode = ____exports.ControlCode:EncodeCommand(rawcode)
    self.Escaped = escaped
    self.Encoded = ____exports.ControlCode:PreEscape(raw)
end
function Command.New(self, raw, rawcode, escaped)
    return __TS__New(____exports.Command, raw, rawcode, escaped)
end
____exports.ControlCode = __TS__Class()
local ControlCode = ____exports.ControlCode
ControlCode.name = "ControlCode"
function ControlCode.prototype.____constructor(self)
    self.Commands = {}
end
function ControlCode.New(self)
    return __TS__New(____exports.ControlCode)
end
function ControlCode.PreEscape(self, val)
    return __TS__StringReplaceAll(
      __TS__StringReplaceAll(
            __TS__StringReplaceAll(val, ____exports.ControlCode.CodeEscape, ____exports.ControlCode.EncodedEscape),
            ____exports.ControlCode.CodeEnd,
            ____exports.ControlCode.EncodedEnd
      ),
      ____exports.ControlCode.CodeStart,
      ____exports.ControlCode.EncodedStart
    )
end
function ControlCode.PreUnescape(self, val)
    return __TS__StringReplaceAll(
      __TS__StringReplaceAll(
            __TS__StringReplaceAll(val, ____exports.ControlCode.EncodedStart, ____exports.ControlCode.CodeStart),
            ____exports.ControlCode.EncodedEnd,
            ____exports.ControlCode.CodeEnd
      ),
      ____exports.ControlCode.EncodedEscape,
      ____exports.ControlCode.CodeEscape
    )
end



真爽。

jarlyyn 发表于 3 天前

export class Command {
    constructor(raw: string, rawcode: string, escaped: string) {
      this.Raw = raw;
      this.EncodedCode = ControlCode.EncodeCommand(rawcode);
      this.Escaped = escaped;
      this.Encoded = ControlCode.PreEscape(raw);
    }
    static New(raw: string, rawcode: string, escaped: string): Command {
      return new Command(raw, rawcode, escaped);
    }
    //转义后的字符
    Escaped: string;
    //编码后的控制代码
    EncodedCode: string;
    //原始字符
    Raw: string;
    //预处理后的字符,用于避免内部Token转换的问题
    Encoded: string
}
export class ControlCode {
    //指令开始字符
    public static CodeStart: string = "\x02";
    //指令结束字符
    public static CodeEnd: string = "\x03";
    //指令开始/结束转义字符
    public static CodeEscape: string = "\x04";
    public static EncodedEscape: string = "\x04\x04";
    public static EncodedStart: string = "\x04\x05";
    public static EncodedEnd: string = "\x04\x06";
    static New(): ControlCode {
      return new ControlCode();
    }
    static PreEscape(val: string): string {
      return val.replaceAll(ControlCode.CodeEscape, ControlCode.EncodedEscape).replaceAll(ControlCode.CodeEnd, ControlCode.EncodedEnd).replaceAll(ControlCode.CodeStart, ControlCode.EncodedStart);
    }
    public static PreUnescape(val: string): string {
      return val.replaceAll(ControlCode.EncodedStart, ControlCode.CodeStart).replaceAll(ControlCode.EncodedEnd, ControlCode.CodeEnd).replaceAll(ControlCode.EncodedEscape, ControlCode.CodeEscape);
    }


对应的TypeScript代码

舒坦太多了。
页: [1]
查看完整版本: 写lua的新姿势,用TypeScript转