regex-filename-posix

Regular expression to split a POSIX filename.


Keywords
regex, regexp, regular, expression, string, path, capture, match, ext, filename, file, extname, basename, dirname, root, split, posix
License
MIT
Install
npm install regex-filename-posix@1.0.0

Documentation

Split Filename

NPM version Build Status Coverage Status Dependencies

Regular expression to split a POSIX filename.

Installation

$ npm install regex-filename-posix

Usage

var re = require( 'regex-filename-posix' );

re

Regular expression to split a POSIX filename.

var parts = re.exec( '/foo/bar/index.js' );
/*
	[
		'/foo/bar/index.js',   // input value
		'/',                   // root
		'foo/bar/',            // dirname
		'index.js',            // basename
		'.js'                  // extname
	]
*/

Notes

  • When executed against dotfile filenames (e.g., .gitignore), the regular expression does not capture the basename as a filename extension.

    var parts = re.exec( '.bash_profile' );
    /*
    	[
    		'.bash_profile',
    		'',
    		'',
    		'.bash_profile',
    		''
    	]
    */
    
    parts = re.exec( '.travis.yml' );
    /*
    	[
    		'.travis.yml',
    		'',
    		'',
    		'.travis.yml',
    		'.yml'
    	]
    */

Examples

var re = require( 'regex-filename-posix' );

var parts;

parts = re.exec( 'index.js' );
/*
	[
		'index.js',
		'',
		'',
		'index.js',
		'.js'
	]
*/

parts = re.exec( '/foo/bar/home.html' );
/*
	[
		'/foo/bar/home.html',
		'/',
		'foo/bar/',
		'home.html',
		'.html'
	]
*/

parts = re.exec( 'foo/file.pdf' );
/*
	[
		'foo/file.pdf',
		'',
		'foo/',
		'file.pdf',
		'.pdf'
	]
*/

parts = re.exec( 'beep/boop.' );
/*
	[
		'beep/boop.',
		'',
		'beep/',
		'boop.',
		'.'
	]
*/

parts = re.exec( '' );
/*
	[
		'',
		'',
		'',
		'',
		''
	]
*/

parts = re.exec( '/foo/bar/file' );
/*
	[
		'/foo/bar/file',
		'/',
		'foo/bar/',
		'file',
		''
	]
*/

parts = re.exec( '/foo/bar/.gitignore' );
/*
	[
		'/foo/bar/.gitignore',
		'/',
		'foo/bar/',
		'.gitignore',
		''
	]
*/

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.