1.0.2 • Published 5 years ago

parsee v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
5 years ago

parsee

Parse

Smol node.js tool to parse command line style arguments

Usage

General

const parsee = require('parsee');

const cmd = parsee('cmd_name', /* list of required arguments */ [
    parsee.type.string, // this command required a string,
    parsee.type.number, // a number,
    [parsee.type.url] // and, optionally, a url
]);

cmd('cmd_name "ayy lmao" 1 https://github.com/');
/* returns
[ 'ayy lmao', // type.string
  1, //type.number
  'https://github.com/', //type.url
  [type.string]: [ 'ayy lmao' ], // Arguments, but mapped to types
  [type.number]: [ 1 ],
  [type.url]: [ 'https://github.com/' ]]
*/

cmd('cmd_name "ayy lmao" 1');
/* returns
[ 'ayy lmao', // type.string
  1, //type.number
  // no url here, because it's optional
  [type.string]: [ 'ayy lmao' ], // Arguments, but mapped to types
  [type.number]: [ 1 ],
  [type.url]: []] // no url here either
*/

cmd('cmd_name "no, this isn\'t a valid arguments');
/* returns false */

Strict and non-strict

const cmd_non_strict = parsee('non_strict', [parsee.type.number, parsee.type.string], {strict: false}); // non-strict by default

// For non-strict commands, you can specify arguments in any order
// cmd_non_strict('non_strict 1 str') ~~~ cmd_non_strict('non_strict str 1')

const cmd_strict = parsee('strict', [parsee.type.number, parsee.type.string], {strict: true});

// For strict commands, you must specify arguments in specified order
// cmd_strict('strict str 1') === false

Enum and regex-defined types

const t_enum_left_or_right = parsee.type.enum('left', 'right');
// Matches only 'left' or 'right' strings

const t_regex_defined_left_or_right = parsee.type.regex_defined(/left|right/);
// Matches only strings that match regex

const cmd_turn_enum = parsee('turn', [t_enum_left_or_right]);
cmd_turn_enum('turn left');
/* returns
[ 'left',
  [t_enum_left_or_right]: [ 'left' ] ]
*/

const cmd_turn_regex = parsee('turn', [t_regex_defined_left_or_right]);
cmd_turn_regex('turn right');
/* returns
[ [ 'right', index: 0, input: 'right' ],
  [t_regex_defined_left_or_right]: [ [ 'right', index: 0, input: 'right' ] ] ]
*/

// cmd_turn_enum('turn AAAAAAA') === cmd_turn_regex('turn FFFFFF') === false;

Rest argument

// To get string that comes after all arguments, you can use parsee.type.rest

const cmd_rest = parsee('/kick', [parsee.type.rest]);
cmd_rest('/kick Arar rar!');
/* returns
[ 'Arar rar!', [parsee.type.rest]: [ 'Arar rar!' ] ]
*/

// parsee.type.rest argument **must** be the last argument