muud
v1.0.5
Published
an extension to mingy to add aliases, promise support, and array returns
Downloads
7
Maintainers
Readme
muud
A simple upgrade to mingy to support command aliases, promise, and array returns. For basic usage, you can see that repository.
It also strips out almost everything but Parsers and Validators. No Shell, no web server, no clients.
Install
npm i muud
Differences From Mingy
There are a few, mostly syntactical:
args
andenv
are no longer passed in separately to thelogic
functions. You can find them as a single object on thelogic
function now.- You can return any value from the parser
logic
function, not just strings. logic
functions can now beasync
.logic
functions now always return an array. You can return multiple messages back to the user in order this way, without any hacky workarounds.Command#set()
has been split out intosetSyntax
andsetLogic
.- You can pass an
Env
intoParser#parse
to set a scopedEnv
for that specific run of the parser. - You can now have multiple prefix aliases when setting command syntax, to avoid redundancy:
setSyntax(['go', 'travel'], '<string:direction>')
. This would expand intogo <string:direction>
andtravel <string:direction>
.
Usage
import { Parser } from 'muud';
const parser = new Parser();
parser.setEnv('test', 1);
parser.addCommand('hello')
.setSyntax(['hello'])
.setLogic(async () => {
return 'Hello!';
});
parser.addCommand('go')
.setSyntax(['go <string:direction>', 'go2 <string:direction>'])
.setLogic(async ({ args }) => {
return ['Went', args.direction];
});
parser.addCommand('zoop')
.setSyntax(['zoop1', 'zoop2'], 'suffix')
.setLogic(async ({ env }) => {
return ['zoop', env.test];
});
const res1 = await parser.parse('hello');
console.log(res1); // ['Hello!']
const res2 = await parser.parse('hello2');
console.log(res2); // ['Hello2!', 'Yo!', 1]
const res3 = await parser.parse('go2 north');
console.log(res3); // ['Went', 'north']
const res4 = await parser.parse('zoop1 suffix');
console.log(res4); // ['zoop', 1]
const res5 = await parser.parse('zoop1 suffix', { test: 2 });
console.log(res5); // ['zoop', 2]
Contributing
Feel free to contribute features by sending a pull request.