写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
真爽。
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]