You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
923 B
44 lines
923 B
'use strict'; |
|
|
|
var path = require('path'); |
|
|
|
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 = getLongExtension(basename); |
|
if (!longExtension) { |
|
return; |
|
} |
|
return getPossibleExtensions(longExtension); |
|
};
|
|
|