eyeglass
Version:
Sass modules for npm.
100 lines • 2.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const SassImplementation_1 = require("./SassImplementation");
const util_1 = require("util");
let rUnquote = /^("|')(.*)\1$/;
let rPlaceholders = /\${([^}]+)}/g;
function unquote(sass, string) {
if (typeof string === "string") {
return sass.types.String(string.replace(rUnquote, "$2"));
}
if (!SassImplementation_1.isSassString(sass, string)) {
throw new Error(`Expected: Sass String. Got: ${util_1.inspect(string)}`);
}
if (rUnquote.test(string.getValue())) {
return sass.types.String(RegExp.$2);
}
else {
return string;
}
}
exports.unquote = unquote;
function unquoteJS(sass, string) {
if (typeof string === "string") {
return string.replace(rUnquote, "$2");
}
if (!SassImplementation_1.isSassString(sass, string)) {
throw new Error(`Expected: Sass String. Got: ${util_1.inspect(string)}`);
}
if (rUnquote.test(string.getValue())) {
return RegExp.$2;
}
else {
return string.getValue();
}
}
exports.unquoteJS = unquoteJS;
function quoteSass(sass, string) {
if (typeof string === "string") {
if (rUnquote.test(string)) {
return sass.types.String(string);
}
else {
return sass.types.String(`"${string}"`);
}
}
if (typeof string === "undefined") {
return undefined;
}
if (!SassImplementation_1.isSassString(sass, string)) {
throw new Error(`Expected: Sass String. Got: ${util_1.inspect(string)}`);
}
if (rUnquote.test(string.getValue())) {
return string;
}
else {
return sass.types.String(`"${string.getValue()}"`);
}
}
exports.quoteSass = quoteSass;
function quoteJS(sass, string) {
if (typeof string === "string") {
if (rUnquote.test(string)) {
return string;
}
else {
return `"${string}"`;
}
}
if (typeof string === "undefined") {
return undefined;
}
if (!SassImplementation_1.isSassString(sass, string)) {
throw new Error(`Expected: Sass String. Got: ${util_1.inspect(string)}`);
}
if (rUnquote.test(string.getValue())) {
return string.getValue();
}
else {
return `"${string.getValue()}"`;
}
}
exports.quoteJS = quoteJS;
function tmpl(sass, templateString, data) {
return templateString.replace(rPlaceholders, (match, key) => {
if (data.hasOwnProperty(key)) {
let v = data[key];
if (typeof v === "string") {
return v;
}
else {
return SassImplementation_1.inspect(sass, v);
}
}
else {
return match;
}
});
}
exports.tmpl = tmpl;
//# sourceMappingURL=strings.js.map