Skip to content

Commit

Permalink
Fix maxLength option being broken on files with no extension (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasklaen committed Apr 17, 2022
1 parent ed4acc0 commit a2ee598
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
4 changes: 3 additions & 1 deletion filenamify.js
Expand Up @@ -35,7 +35,9 @@ export default function filenamify(string, options = {}) {
const allowedLength = typeof options.maxLength === 'number' ? options.maxLength : MAX_FILENAME_LENGTH;
if (string.length > allowedLength) {
const extensionIndex = string.lastIndexOf('.');
string = string.slice(0, Math.min(allowedLength, extensionIndex)) + string.slice(extensionIndex);
const filename = extensionIndex === -1 ? string : string.slice(0, extensionIndex);
const extension = extensionIndex === -1 ? '' : string.slice(extensionIndex);
string = filename.slice(0, Math.min(allowedLength, filename.length)) + extension;
}

return string;
Expand Down
5 changes: 5 additions & 0 deletions test.js
Expand Up @@ -38,4 +38,9 @@ test('filenamify length', t => {
const filename = 'this/is/a/very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_filename.txt';
t.is(filenamify(path.basename(filename)), 'very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_.txt');
t.is(filenamify(path.basename(filename), {maxLength: 180}), 'very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_filename.txt');

// Basename length: 148
const filenameNoExt = 'very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_filename';
t.is(filenamify(filenameNoExt), 'very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_');
t.is(filenamify(filenameNoExt, {maxLength: 20}), 'very_very_very_very_');
});

0 comments on commit a2ee598

Please sign in to comment.