UNPKG

uascript

Version:
36 lines (35 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compile = void 0; const keyword_map_1 = require("./keyword-map"); function compile(source) { return new Promise((resolve, reject) => { try { const { source: sourceWithoutStrings, strings } = parseString(source); source = sourceWithoutStrings; Object.entries(keyword_map_1.dataMap) .map(map => source = source.replace(new RegExp(map[1], 'g'), map[0])); source = restoreString(source, strings); resolve(source); } catch (e) { reject(e); } }); } exports.compile = compile; function parseString(source) { const doubleQuoteStrings = source.match(/"(.*?)"/g) || []; const singleQuoteStrings = source.match(/'(.*?)'/g) || []; const templateQuoteStrings = source.match(/`(.*?)`/g) || []; const strings = [...doubleQuoteStrings, ...singleQuoteStrings, ...templateQuoteStrings]; strings.forEach((savedString, i) => source = source.replace(savedString, `$${i}$`)); return { source, strings }; } function restoreString(source, savedStrings) { savedStrings.forEach((savedString, i) => source = source.replace(`$${i}$`, savedString)); return source; }