UNPKG

eyeglass

Version:
107 lines 4.73 kB
"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