@@ -6,7 +6,7 @@ import * as lua from "./LuaAST";
66import { loadLuaLibFeatures , LuaLibFeature } from "./LuaLib" ;
77import { isValidLuaIdentifier } from "./transformation/utils/safe-names" ;
88import { EmitHost } from "./transpilation" ;
9- import { assert , intersperse , normalizeSlashes , trimExtension } from "./utils" ;
9+ import { assert , intersperse , invertObject , normalizeSlashes , trimExtension } from "./utils" ;
1010
1111// https://www.lua.org/pil/2.4.html
1212// https://www.ecma-international.org/ecma-262/10.0/index.html#table-34
@@ -25,10 +25,11 @@ const escapeStringMap: Record<string, string> = {
2525
2626export const escapeString = ( value : string ) => `"${ value . replace ( escapeStringRegExp , char => escapeStringMap [ char ] ) } "` ;
2727
28+ const unescapeStringRegExp = new RegExp ( `\\\\${ escapeStringRegExp . source } ` , "g" ) ;
29+ const unescapeStingMap = invertObject ( escapeStringMap ) ;
2830export const unescapeLuaString = ( value : string ) => {
29- assert ( value . startsWith ( '"' ) && value . endsWith ( "" ) , 'Only strings generated by "escapeString" can be unescaped' ) ;
30- // TODO: Unescape
31- return value . slice ( 1 , - 1 ) ;
31+ assert ( value . startsWith ( '"' ) && value . endsWith ( '"' ) , 'Only strings generated by "escapeString" can be unescaped' ) ;
32+ return value . slice ( 1 , - 1 ) . replace ( unescapeStringRegExp , char => unescapeStingMap [ char ] ) ;
3233} ;
3334
3435/**
0 commit comments