From f7e9716e9395946dfd567af667ca8536b52cbb6f Mon Sep 17 00:00:00 2001 From: s0ph1e Date: Tue, 10 May 2016 22:06:02 +0300 Subject: [PATCH 1/2] Fix exceptions in path.extname for node v6, close #70 --- lib/filename-generators/by-site-structure.js | 8 ++++---- lib/filename-generators/by-type.js | 4 ++-- lib/resource.js | 4 ++-- lib/utils.js | 5 +++++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/filename-generators/by-site-structure.js b/lib/filename-generators/by-site-structure.js index 0ffddf6f..b8da0022 100644 --- a/lib/filename-generators/by-site-structure.js +++ b/lib/filename-generators/by-site-structure.js @@ -1,14 +1,14 @@ var url = require('url'); var path = require('path'); +var utils = require('../utils'); module.exports = function generateFilename (resource, options) { var urlObject = url.parse(resource.getUrl()); - var extension = path.extname(urlObject.pathname); - if(resource.isHtml() && !extension){ + var extension = utils.getFilenameExtension(urlObject.pathname); + if(resource.isHtml() && !extension) { var fileName = options.defaultFilename + (urlObject.search || ''); return getSafeAbsoluteFilename(path.join(urlObject.pathname || '/', fileName)); - } - else{ + } else { return getSafeAbsoluteFilename(urlObject.pathname); } }; diff --git a/lib/filename-generators/by-type.js b/lib/filename-generators/by-type.js index 37182aad..eb347492 100644 --- a/lib/filename-generators/by-type.js +++ b/lib/filename-generators/by-type.js @@ -7,7 +7,7 @@ module.exports = function generateFilename (resource, options, loadedResources) var occupiedFilenames = getOccupiedFilenames(loadedResources, options); var filename = getFilenameForResource(resource, options); - var extension = path.extname(filename); + var extension = utils.getFilenameExtension(filename); var directory = getDirectoryByExtension(extension, options); var currentFilename = path.join(directory, filename); @@ -27,7 +27,7 @@ function getFilenameForResource (resource, options) { var filename = preferredFilename || urlFilename || options.defaultFilename; var resourceType = resource.getType(); - var extension = path.extname(filename); + var extension = utils.getFilenameExtension(filename); if (!extension && defaultExtensions[resourceType]) { extension = defaultExtensions[resourceType]; diff --git a/lib/resource.js b/lib/resource.js index 640c6d7b..66447abb 100644 --- a/lib/resource.js +++ b/lib/resource.js @@ -1,5 +1,5 @@ var _ = require('lodash'); -var path = require('path'); +var utils = require('./utils'); var types = require('./config/resource-types'); var typesByHtmlData = require('./config/resource-types-by-tag'); @@ -97,7 +97,7 @@ Resource.prototype.setHtmlData = function setHtmlData (data) { }; Resource.prototype.getType = function getType () { - var ext = path.extname(this.filename); + var ext = utils.getFilenameExtension(this.filename); var parent = this.parent; var hasHtmlData = !_.isEmpty(this.htmlData); diff --git a/lib/utils.js b/lib/utils.js index 42ef6a55..3c1338b4 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -41,12 +41,17 @@ function waitAllFulfilled (promises) { })); } +function getFilenameExtension (filename) { + return (typeof filename === 'string') ? path.extname(filename) : null; +} + module.exports = { isUrl: isUrl, getUrl: getUrl, getUnixPath: getUnixPath, getRelativePath: getRelativePath, getFilenameFromUrl: getFilenameFromUrl, + getFilenameExtension: getFilenameExtension, getHashFromUrl: getHashFromUrl, waitAllFulfilled: waitAllFulfilled }; From 9e27c6adaa44cdd6c965fc8263cfbb05c67d89aa Mon Sep 17 00:00:00 2001 From: s0ph1e Date: Tue, 10 May 2016 22:18:42 +0300 Subject: [PATCH 2/2] Fix eslint --- lib/filename-generators/by-site-structure.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/filename-generators/by-site-structure.js b/lib/filename-generators/by-site-structure.js index b8da0022..014b94a0 100644 --- a/lib/filename-generators/by-site-structure.js +++ b/lib/filename-generators/by-site-structure.js @@ -5,10 +5,11 @@ var utils = require('../utils'); module.exports = function generateFilename (resource, options) { var urlObject = url.parse(resource.getUrl()); var extension = utils.getFilenameExtension(urlObject.pathname); - if(resource.isHtml() && !extension) { + if (resource.isHtml() && !extension) { var fileName = options.defaultFilename + (urlObject.search || ''); return getSafeAbsoluteFilename(path.join(urlObject.pathname || '/', fileName)); - } else { + } + else { return getSafeAbsoluteFilename(urlObject.pathname); } };