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()
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 = ;/* OR, some ES6 module-loading love: */; ;
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 = ;/* or, for some ES6 module-loading love */; ;
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.
License
Copyright (c) 2015 Kristian Muñiz [https://krismuniz.com/]