eyeglass
Version:
Sass modules for npm.
107 lines • 4.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const URI_1 = require("../util/URI");
const SassImplementation_1 = require("../util/SassImplementation");
const IS_WINDOWS = /win32/.test(require("os").platform());
const normalizeURI = function (_eyeglass, sass) {
let methods = {
"eyeglass-uri-preserve($uri)": function ($uri, done) {
if (!SassImplementation_1.isSassString(sass, $uri)) {
return done(SassImplementation_1.typeError(sass, "string", $uri));
}
let uri = $uri.getValue();
// decorate the uri
uri = URI_1.URI.preserve(uri);
done(new sass.types.String(uri));
},
"eyeglass-uri-restore($uri)": function ($uri, done) {
if (!SassImplementation_1.isSassString(sass, $uri)) {
return done(SassImplementation_1.typeError(sass, "string", $uri));
}
let uri = $uri.getValue();
// restore the uri
uri = URI_1.URI.restore(uri);
done(new sass.types.String(uri));
}
};
if (IS_WINDOWS || process.env.EYEGLASS_NORMALIZE_PATHS) {
let $web = new sass.types.String("web");
let $system = new sass.types.String("system");
let egNormalizeUri = function ($uri, $type) {
if (!SassImplementation_1.isSassString(sass, $type)) {
throw SassImplementation_1.typeError(sass, "string", $type);
}
if (!SassImplementation_1.isSassString(sass, $uri)) {
throw SassImplementation_1.typeError(sass, "string", $uri);
}
let type = $type.getValue();
let uri = $uri.getValue();
// normalize the uri for the given type
uri = URI_1.URI[type](uri);
return new sass.types.String(uri);
};
methods["-eyeglass-normalize-uri($uri, $type: web)"] = function ($uri, $type, done) {
try {
done(egNormalizeUri($uri, $type));
}
catch (e) {
done(e);
}
};
methods["-eyeglass-normalize-assets($assets)"] = function ($assets, done) {
if (!SassImplementation_1.isSassMap(sass, $assets)) {
done($assets);
return;
}
let size = $assets.getLength();
let $newAssets = new sass.types.Map(size);
for (let i = 0; i < size; i++) {
let $url = $assets.getKey(i);
if (SassImplementation_1.isSassString(sass, $url)) {
$url = egNormalizeUri($url, $web);
}
$newAssets.setKey(i, $url);
let $assetProps = $assets.getValue(i);
if (SassImplementation_1.isSassMap(sass, $assetProps)) {
let numAssetProps = $assetProps.getLength();
let $newAssetProps = new sass.types.Map(numAssetProps);
for (let pi = 0; pi < numAssetProps; pi++) {
let $propName = $assetProps.getKey(pi);
let $propValue = $assetProps.getValue(pi);
$newAssetProps.setKey(pi, $propName);
if (SassImplementation_1.isSassString(sass, $propName)) {
let propName = $propName.getValue();
try {
switch (propName) {
case "filepath":
$newAssetProps.setValue(pi, egNormalizeUri($propValue, $system));
break;
case "uri":
$newAssetProps.setValue(pi, egNormalizeUri($propValue, $web));
break;
default:
$newAssetProps.setValue(pi, $propValue);
}
}
catch (e) {
done(e);
return;
}
}
else {
$newAssetProps.setValue(pi, $propValue);
}
}
$newAssets.setValue(i, $newAssetProps);
}
else {
$newAssets.setValue(i, $assetProps);
}
}
done($newAssets);
};
}
return methods;
};
exports.default = normalizeURI;
//# sourceMappingURL=normalize-uri.js.map