Nocturnal Practitioners of Magic
    Have ideas to improve npm?Join in the discussion! »

    brace-expansion-parser
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0 • Public • Published

    brace-expansion-parser

    Parses strings with brace expansions, like this: foo.{bar,baz}.

    Install

    $ npm install [--save] brace-expansion-parser
    

    Use

    expand

    If all you want is the set of expanded strings, use this.

    import { expand } from 'brace-expansion-parser';
     
    expand('foo.bar');       // [ 'foo.bar' ]
    expand('foo.{bar,baz}'); // [ 'foo.bar', 'foo.baz' ]
    expand('{a,b}.{c,d}');   // [ 'a.c', 'a.d', 'b.c', 'b.d' ]

    parse

    Provides detailed information about the brace expansion expression.

    import { parse } from 'brace-expansion-parser';
     
    parse('foo.{bar,baz}');
    /*
    BraceExpression {
      start: 0,
      end: 13,
      elements:
       [ StringExpression { start: 0, end: 4, content: 'foo.' },
         ExpansionExpression { start: 4, end: 13, elements: [Object] } ] }
    */

    If you want to get the string version of the expression, call serialize:

    import { parse } from 'brace-expansion-parser';
     
    parse('foo.{bar,baz}').serialize(); // 'foo.{bar,baz}'

    You can modify an expression object and use it to generate a modified expression string:

    import { parse, StringExpression } from 'brace-expansion-parser';
     
    const ast = parse('foo.{bar,baz}');
     
    ast.elements[0].content = 'FOO.';
    ast.elements[1].elements.push(new StringExpression('moo'));
     
    ast.serialize(); // 'FOO.{bar,baz,moo}'

    lex

    Breaks the brace expresion string into a stream of tokens.

    import { lex, TokenType } from 'brace-expansion-parser';
     
    lex('foo.{bar,baz}');
    /*
    [ Token { type: 3, start: 0, end: 4 },
      Token { type: 0, start: 4, end: 5 },
      Token { type: 3, start: 5, end: 8 },
      Token { type: 2, start: 8, end: 9 },
      Token { type: 3, start: 9, end: 12 },
      Token { type: 1, start: 12, end: 13 } ]
    */
    TokenType;
    /*
    { '0': 'LBRACE',
      '1': 'RBRACE',
      '2': 'COMMA',
      '3': 'STRING',
      LBRACE: 0,
      RBRACE: 1,
      COMMA: 2,
      STRING: 3 }
    */

    Development

    Clone this repo, then run npm install and npm test to make sure everything works. Add features or fix bugs on a new branch and create a pull request.

    Install

    npm i brace-expansion-parser

    DownloadsWeekly Downloads

    2

    Version

    1.0.0

    License

    Apache-2.0

    Last publish

    Collaborators

    • avatar