README
slash-command
A simple slash command parsing module written in JavaScript. In other words, a function that parses a string and returns an object which separates the command keyword(s) from the body of the command.
Example:
slashCommand('/mycommand This is the command body');
slashCommand()
returns the following object:
{
slashcommand: '/mycommand', // command(s) as stated
command: 'mycommand', // main command name (first in string)
subcommands: null, // array of subcommands; see below for more info.
body: 'This is the command body', // the body of the command
original: '/mycommand This is the command body' // the original string
}
Features
This tiny module abstracts away the string-parsing process: string manipulation, matching regular expressions, mapping arrays, replacing strings, etc.
slash-command
takes a string, parses it, and returns an object containing the slash command keywords, subcommands (see below), body, and the original string.
Use cases
slash-command
is useful when building:
- chat clients that support slash commands
- CLI-like software
- messaging platform chatbots (e.g. for Slack or HipChat)
- platform-agnostic conversational interfaces and bots (e.g. email, SMS, IRC, etc.)
- Twitter bots, Tumblr bots, etc.
Installation
Installing the slash-command
module is as simple as installing any other npm module:
$ npm install slash-command --save
Usage
slash-command
exports a single function, so it is quite to use:
var slashCommand = require('slash-command');
/* OR, some ES6 module-loading love: */
import slashCommand from 'slash-command';
slashCommand('/tweet This is a tweet.');
slashCommand()
returns the following object:
{
slashcommand: '/tweet', // command(s) as stated
command: 'tweet', // main command (first in string)
subcommands: null, // array of all subcommands; null if there are none
body: 'This is a tweet.', // the body of the command
original: '/tweet This is a tweet.' // the original string
}
Subcommands
Let's suppose there are multiple consecutive slash commands in the string. We could use them!
I call these subcommands, and slash-command
supports them very well. It returns all of them in a "subcommands
" array inside the result object (in order of appearance; from left to right) so you can do whatever crazy thing you want with them.
var slashCommand = require('slash-command');
/* or, for some ES6 module-loading love */
import slashCommand from 'slash-command';
slashCommand('/google/calendar Meeting with Sarah at 6pm.');
slashCommand()
returns the following object:
{
slashcommand: '/google/calendar', // command(s) as stated
command: 'google', // main command (first in string)
subcommands: ['calendar'], // array of all subcommands
body: 'Meeting with Sarah at 6pm.', // the body of the command
original: '/google/calendar Meeting with Sarah at 6pm.' // the original string
}
Required Parameters:
string
([string]
): The string argument; contains a slash command.
Testing
Want to run the tests? Go ahead and type the following in your terminal/command prompt:
$ npm install
$ npm test
Contributing
Bug Reports & Feature Requests
Something does not work as expected or perhaps you think this module needs a feature? Please open an issue using GitHub's issue tracker.
Developing
Pull Requests (PRs) are welcome. Just make sure you follow the same basic style conventions as the original code.