astro-ghostcms/.pnpm-store/v3/files/45/2410d54673487f1e9ce708bc1aa...

95 lines
3.8 KiB
Plaintext

"use strict";
exports.__esModule = true;
exports.convertScssOrCss = void 0;
var regex_1 = require("../regex/regex");
var logger_1 = require("../logger");
var utility_1 = require("../utility");
var format_property_1 = require("./format.property");
/** converts scss/css to sass. */
function convertScssOrCss(text, STATE) {
var isMultiple = regex_1.isMoreThanOneClassOrId(text);
var lastSelector = STATE.CONTEXT.convert.lastSelector;
// if NOT interpolated class, id or partial
if (!/[\t ]*[#.%]\{.*?}/.test(text)) {
if (lastSelector && new RegExp('^.*' + regex_1.escapeRegExp(lastSelector)).test(text)) {
/*istanbul ignore if */
if (STATE.CONFIG.debug)
logger_1.SetConvertData({ type: 'LAST SELECTOR', text: text });
return {
lastSelector: lastSelector,
text: utility_1.replaceWithOffset(removeInvalidChars(text.replaceAll(lastSelector, '&')).trimEnd(), STATE.CONFIG.tabSize, STATE)
};
}
else if (regex_1.isCssOneLiner(text)) {
/*istanbul ignore if */
if (STATE.CONFIG.debug)
logger_1.SetConvertData({ type: 'ONE LINER', text: text });
var split = text.split('{');
var properties = split[1].split(';');
// Set isProp to true so that it Sets the property space.
STATE.LOCAL_CONTEXT.isProp = true;
var selector = split[0].trim();
return {
lastSelector: selector,
text: selector.concat('\n', properties
.map(function (v) {
return utility_1.replaceWithOffset(format_property_1.setPropertyValueSpaces(STATE, removeInvalidChars(v)).trim(), STATE.CONFIG.tabSize, STATE);
})
.join('\n')).trimEnd()
};
}
else if (regex_1.isCssPseudo(text) && !isMultiple) {
/*istanbul ignore if */
if (STATE.CONFIG.debug)
logger_1.SetConvertData({ type: 'PSEUDO', text: text });
return {
lastSelector: lastSelector,
text: removeInvalidChars(text).trimEnd()
};
}
else if (regex_1.isCssSelector(text)) {
/*istanbul ignore if */
if (STATE.CONFIG.debug)
logger_1.SetConvertData({ type: 'SELECTOR', text: text });
lastSelector = removeInvalidChars(text).trimEnd();
return { text: lastSelector, lastSelector: lastSelector };
}
}
/*istanbul ignore if */
if (STATE.CONFIG.debug)
logger_1.SetConvertData({ type: 'DEFAULT', text: text });
return { text: removeInvalidChars(text).trimEnd(), lastSelector: lastSelector };
}
exports.convertScssOrCss = convertScssOrCss;
function removeInvalidChars(text) {
var newText = '';
var isInQuotes = false;
var isInComment = false;
var isInInterpolation = false;
var quoteChar = '';
for (var i = 0; i < text.length; i++) {
var char = text[i];
if (!isInQuotes && char === '/' && text[i + 1] === '/') {
isInComment = true;
}
else if (/['"]/.test(char)) {
if (!isInQuotes || char === quoteChar) {
isInQuotes = !isInQuotes;
if (isInQuotes) {
quoteChar = char;
}
}
}
else if (/#/.test(char) && /{/.test(text[i + 1])) {
isInInterpolation = true;
}
else if (isInInterpolation && /}/.test(text[i - 1])) {
isInInterpolation = false;
}
if (!/[;\{\}]/.test(char) || isInQuotes || isInComment || isInInterpolation) {
newText += char;
}
}
return newText;
}