Skip to content

Commit

Permalink
Modify: Remove regex from lib/extension.js
Browse files Browse the repository at this point in the history
  • Loading branch information
sttk committed Apr 19, 2021
1 parent 91bcd17 commit 214a0b2
Showing 1 changed file with 35 additions and 11 deletions.
46 changes: 35 additions & 11 deletions lib/extension.js
@@ -1,20 +1,44 @@
'use strict';

var path = require('path');

var EXTRE = /\.[^.]*/g;
var LONGEXTRE = /^[.]?[^.]+([.].*[^.])$/;
function getLongExtension(basename) {
if (basename[basename.length - 1] === '.') {
return null;
}

var startIndex = (basename[0] === '.') ? 1 : 0;

var dotIndex = basename.indexOf('.', startIndex);
if (dotIndex <= startIndex) {
return null;
}

return basename.slice(dotIndex);
}

function getPossibleExtensions(longExtension) {
var arr = [longExtension];
var len = longExtension.length;
var startIndex = 1;

while (startIndex < len) {
var dotIndex = longExtension.indexOf('.', startIndex);
if (dotIndex < 0) {
break;
}
arr.push(longExtension.slice(dotIndex));
startIndex = dotIndex + 1;
}

return arr;
}

module.exports = function(input) {
var basename = path.basename(input);
var longExtension = LONGEXTRE.exec(basename);
var longExtension = getLongExtension(basename);
if (!longExtension) {
return;
}
var possibleExtensions = longExtension[1].match(EXTRE);
/* istanbul ignore if */
if (!possibleExtensions) {
return;
}
return possibleExtensions.map(function(_, idx, exts) {
return exts.slice(idx).join('');
});
return getPossibleExtensions(longExtension);
};

0 comments on commit 214a0b2

Please sign in to comment.