@datatypes/path

1.0.0 • Public • Published

Path

How node's path module should have been implemented.

First of all this module uses a saner definition for the sections of the path-string.

┌───────────────────────────────────────────────────────────────────┐
│                            path                                   │
├──────────────────────────────────────┬────────────────────────────┤
│             directoryPath            │      fileName              │
├──────────────────┬───────────────────┼────────────────┬───────────┤
│         *        │                   │    baseName    │ extension │
├──────┐           │   directoryName   ├──────────┬─────┴───────────┤
│ root │           │                   │ fileRoot │   extensions    │
├──────┴───────────┴───────────────────┴──────────┴─────────────────┤
│  /     home/user /       dir         /   file   . tar .   gz      │
└───────────────────────────────────────────────────────────────────┘

(* grandParentDirectory - only used internally)

Addtional attributes: fileType, isDotfile, isAbsolute

The complete path object looks like this:

path: /home/user/dir/file.tar.gz
root: /
directoryPath: /home/user/dir
directoryName: dir
fileName: file.tar.gz
baseName: file.tar
extension: gz
fileRoot: file
extensions: [tar, gz]
# File type is the normalized and lowercased extension (e.g. YML => yaml)
fileType: gz
isDotfile: false
isAbsolute: true

Internally root, grandParentDirectory, directoryName, fileRoot, extensions and extension are handled as the source properties. This means all the other properties are derived from this source properties.

Installation

npm install --save @datatypes/path

Usage

import Path from '@datatypes/path'

const pathA = Path.fromString('/home/user/dir/file-a.tar.gz')
const pathB = new Path({
  directoryPath: '/home/user/dir',
  fileName: 'file-b.tar.gz',
})

console.info(`
  File extension of file A: ${pathA.extension}
  Base name of file B: ${pathB.baseName}
`)

Development

Run npm test --coverage to see the current test-coverage. Test coverage must not decrease through future commits.

/@datatypes/path/

    Package Sidebar

    Install

    npm i @datatypes/path

    Weekly Downloads

    0

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators