CodeWars Kata: File Path Operations

The Kata File-Path-Operations requires you to implement common filename functions. Functions are needed to find the file extension, the filename, and the path to the directory.

To solve all three problems you need to find a specific pattern in a string. I choose to use Regular Expressions to solve the problems.

Regular Expressions are quite complicated to write. In order to quickly create and test regex expressions I use this website Regex 101. It allows you to quickly test your expression against multiple inputs as well as provides a documentation for the regex syntax.

Solution

export class FileMaster {

  constructor(private filepath: string) { }

  extension(): string {
   return this.filepath.match(/\.(.*)/)[1];
  }

  filename(): string {
   return this.filepath.match(/\/([^\/]*)\./)[1];
  }

  dirpath(): string {
   return this.filepath.match(/(.*\/)/)[1];
  }
}

Note

This code passed the test suite for the problem. However it is not suited for a production system.

The code does not work for these paths:

  • Malformed filenames (invalid filepaths, cannot be detected)
  • Files using path for Windows (Windows uses the ’’- separator for paths)
  • Does not work for folders containing a ’.’ (i.e. .vscode/test.json)
  • No handling of files without file extension

There are probably even more edge cases that I missed. Therefore in a production environment, you should rely on the existing functions provided by the Path Module.

Leave a Reply

Your email address will not be published. Required fields are marked *