pathmap

2.0.0 • Public • Published

pathmap

Rake's pathmap for JavaScript. Think of it like sprintf for paths.

install

$ npm install pathmap

usage

pathmap accepts a path and a pathmap spec and returns a formatted string.

import pathmap from "pathmap"

pathmap("a/b/c/d/file.txt", "rm %f") // => 'rm file.txt'
pathmap("file.coffee", "mv %p %X.js") // => 'mv file.coffee file.js'

The following patterns are supported:

  • %p - The complete path.
  • %f - The base file name of the path, with its file extension, but without any directories.
  • %n - The file name of the path without its file extension.
  • %d - The directory list of the path.
  • %x - The file extension of the path. An empty string if there is no extension.
  • %X - Everything but the file extension.
  • %s - The file separator. This can be configured by setting pathmap.sep.
  • %% - A percent sign.

The %d pattern supports a count argument to specify the number of directories to return from either side.

pathmap("a/b/c/d/file.txt", "%2d") // => 'a/b'
pathmap("a/b/c/d/file.txt", "%-2d") // => 'c/d'

%p, %f, %n, %d, %x and %X support a replacement argument that can be used to replace portions of the resulting string. The pattern looks like "{old,new}".

pathmap("file.md", "%X%{md,mdown}x") // => 'file.mdown'

functions

function chomp(path: string, string: string): string

Removes the specified string from the end of the path.

import { chomp } from "pathmap"

chomp("a/b/c/d/file.txt", "file.txt") // => 'a/b/c/d/'

function dirname(path: string, count: number): string

Returns the directory name of the path, optionally with a count of directories to return.

import { dirname } from "pathmap"

dirname("a/b/c/d/file.txt", 2) // => 'a/b'
dirname("a/b/c/d/file.txt", -2) // => 'c/d'

function basename(path: string, ext?: string): string

Returns the base file name of the path, optionally with a specified file extension.

import { basename } from "pathmap"

basename("a/b/c/d/file.txt") // => 'file.txt'
basename("a/b/c/d/file.txt", ".txt") // => 'file'

function extname(path: string): string

Returns the file extension of the path, or an empty string if there is no extension.

import { extname } from "pathmap"

extname("a/b/c/d/file.txt") // => '.txt'
extname("a/b/c/d/file") // => ''

function replace(str: string, patterns: string, callback?: (substring: string, ...args: any[]) => string): string

Replaces patterns in a string based on the provided patterns. The patterns are specified in the form of pat1,rep1;pat2,rep2....

import { replace } from "pathmap"

replace("a/b/c/d/file.txt", "a,alpha;b,beta") // => 'alpha/beta/c/d/file.txt'
replace("a/b/c/d/file.txt", "a,alpha;b,beta", (substring) =>
  substring.toUpperCase(),
) // => 'ALPHA/BETA/c/d/file.txt'

license

MIT License

Package Sidebar

Install

npm i pathmap

Weekly Downloads

10

Version

2.0.0

License

MIT

Unpacked Size

11.6 kB

Total Files

4

Last publish

Collaborators

  • jeremyruppel