| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- "use strict";
 
- const path = require("path");
 
- const looksLikeAbsolutePath = (maybeAbsolutePath) => {
 
- 	return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
 
- };
 
- const normalizePathSeparator = (p) => p.replace(/\\/g, "/");
 
- const _makePathsRelative = (context, identifier) => {
 
- 	return identifier
 
- 		.split(/([|! ])/)
 
- 		.map(str => looksLikeAbsolutePath(str) ?
 
- 			normalizePathSeparator(path.relative(context, str)) : str)
 
- 		.join("");
 
- };
 
- exports.makePathsRelative = (context, identifier, cache) => {
 
- 	if(!cache) return _makePathsRelative(context, identifier);
 
- 	const relativePaths = cache.relativePaths || (cache.relativePaths = new Map());
 
- 	let cachedResult;
 
- 	let contextCache = relativePaths.get(context);
 
- 	if(typeof contextCache === "undefined") {
 
- 		relativePaths.set(context, contextCache = new Map());
 
- 	} else {
 
- 		cachedResult = contextCache.get(identifier);
 
- 	}
 
- 	if(typeof cachedResult !== "undefined") {
 
- 		return cachedResult;
 
- 	} else {
 
- 		const relativePath = _makePathsRelative(context, identifier);
 
- 		contextCache.set(identifier, relativePath);
 
- 		return relativePath;
 
- 	}
 
- };
 
 
  |