shell-split

1.0.0 • Public • Published

shell-split

This is effectively a port of go-shellquote to Node, because if you just want the string-tokenization characteristics of shell syntax, Node's shell-quote has too many frills (such as operator recognition and variable substitution) that can make it harder to write/parse strings that may have unescaped shell-significant characters.

.split

Aliased as: .unquote, .unescape, .parse, the return of the module itself

Returns an array of strings specified by the input string.

Note that this function follows only basic shell-quoting rules, meaning that advanced features, such as non-literal backslash escapes (like \n for a newline) or substituted parameters (like $HOME), are not recognized (a \n, even with double-quotes, will be recognized as a literal 'n').

.quote

Aliased as: .join, .escape, .stringify

This function backslash-excapes special characters within the string (the same ones from go-shellquote plus closing braces), and surrounds it with double quotes if it contains whitespace or begins with a tilde (or is empty).

If passed an array, this function will escape every item within the array as a shell-quoted string, then join them with single spaces.

Note that this function is mostly included to provide a similar API surface to the modules that inspired it (node-shell-quote and go-shellquote). Depending on your use case, there may well be simpler ways to make your strings shell-clean than this function (such as only escaping a particular problematic character): if such a technique is available, I recommend using that instead.

Errors

Also attached to the exported module are UnterminatedSingleQuoteError, UnterminatedDoubleQuoteError, and UnterminatedEscapeError, if you wish to check for which error broke a parsing operation using the instanceof operator (though I'd recommend checking the name property instead).

Package Sidebar

Install

npm i shell-split

Weekly Downloads

18

Version

1.0.0

License

MIT

Unpacked Size

21.1 kB

Total Files

8

Last publish

Collaborators

  • stuartpb