'use strict'; var path = require('path'), detectNewline = require('detect-newline'); function unixStylePath(filePath) { return filePath.split(path.sep).join('/'); } var PLUGIN_NAME = require('../package.json').name; var urlRegex = /^(https?|webpack(-[^:]+)?):\/\//; var debug = require('debug-fabulous')()(PLUGIN_NAME + ':utils'); /* So reusing the same ref for a regex (with global (g)) is from a poor decision in js. See http://stackoverflow.com/questions/10229144/bug-with-regexp-in-javascript-when-do-global-search So we either need to use a new instance of a regex everywhere. */ var sourceMapUrlRegEx = function(){ return /\/\/\# sourceMappingURL\=.*/g;}; var getCommentFormatter = function (file) { var extension = file.relative.split('.').pop(), fileContents = file.contents.toString(), newline = detectNewline.graceful(fileContents || ''), commentFormatter = function(url) { return ''; }; if (file.sourceMap.preExistingComment){ debug(logCb('preExistingComment commentFormatter')); commentFormatter = function(url) { return "//# sourceMappingURL=" + url + newline; }; return commentFormatter; } switch (extension) { case 'css': debug(logCb('css commentFormatter')); commentFormatter = function(url) { return newline + "/*# sourceMappingURL=" + url + " */" + newline; }; break; case 'js': debug(logCb('js commentFormatter')); commentFormatter = function(url) { return newline + "//# sourceMappingURL=" + url + newline; }; break; default: debug(logCb('unknown commentFormatter')); } return commentFormatter; }; var getInlinePreExisting = function(fileContent){ if(sourceMapUrlRegEx().test(fileContent)){ debug(logCb('has preExisting')); return fileContent.match(sourceMapUrlRegEx())[0]; } }; function logCb(toLog){ return function() { return toLog; }; } module.exports = { unixStylePath: unixStylePath, PLUGIN_NAME: PLUGIN_NAME, urlRegex: urlRegex, sourceMapUrlRegEx: sourceMapUrlRegEx, getCommentFormatter: getCommentFormatter, getInlinePreExisting: getInlinePreExisting, logCb: logCb };