@amplitude/ampli
Version:
Amplitude CLI
39 lines (38 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSvelte = void 0;
const ScriptStartPrefix = '<script';
const ScriptEndSuffix = '</script>';
const LangRegex = /\blang\s*=\s*["']([^"']*)["']/;
function parseSvelte(content) {
const scripts = [];
for (let currentPosition = 0;; currentPosition < content.length) {
const startScriptIndex = content.indexOf(ScriptStartPrefix, currentPosition);
if (startScriptIndex < 0) {
break;
}
const startTagEndIndex = content.indexOf('>', startScriptIndex);
if (startTagEndIndex < 0) {
break;
}
const endTagStartIndex = content.indexOf(ScriptEndSuffix, startTagEndIndex);
if (endTagStartIndex < 0) {
break;
}
const startRow = (content.substring(0, startScriptIndex).match(/\n/g) || []).length + 1;
let lang;
const langMatch = LangRegex.exec(content.substring(startScriptIndex, startTagEndIndex));
if (langMatch) {
[, lang] = langMatch;
}
const script = {
lang,
code: content.substring(startTagEndIndex + 1, endTagStartIndex),
startRow,
};
scripts.push(script);
currentPosition = endTagStartIndex + ScriptEndSuffix.length;
}
return scripts;
}
exports.parseSvelte = parseSvelte;