Skip to content

Plugin that adds a `.captureSet()` method to snapdragon, for matching and capturing substrings that have an `open` and `close`, like braces, brackets, etc

License

Notifications You must be signed in to change notification settings

here-be/snapdragon-bracket

Repository files navigation

snapdragon-capture-set NPM version NPM monthly downloads NPM total downloads Linux Build Status

Plugin that adds a .captureSet() method to snapdragon, for matching and capturing substrings that have an open and close, like braces, brackets, etc

Table of Contents - [Install](#install) - [Usage](#usage) - [API](#api) - [About](#about)

Install

Install with npm:

$ npm install --save snapdragon-capture-set

Usage

var Snapdragon = require('snapdragon');
var captureSet = require('snapdragon-capture-set');
var parser = new Snapdragon.Parser()
  .use(captureSet())
  .captureSet('brace', /^\{/, /^\}/) 
  .set('text', function() {
    var pos = this.position();
    var m = this.match(/^[^{}]/);
    if (!m) return;
    return pos({
      type: 'text',
      val: m[0]
    });
  });

var ast = parser.parse('a{b,{c,d},e}f');
console.log(ast.nodes[2]);
// Node {
//   type: 'brace',
//   nodes:
//    [ Node { type: 'brace.open', val: '{', position: [Object] },
//      Node { type: 'text', val: 'b', position: [Object] },
//      Node { type: 'text', val: ',', position: [Object] },
//      Node { type: 'brace', nodes: [Object], position: [Object] },
//      Node { type: 'text', val: ',', position: [Object] },
//      Node { type: 'text', val: 'e', position: [Object] },
//      Node { type: 'brace.close', val: '}', position: [Object] } ],
//   position: Position { start: { line: 1, column: 2 }, end: { line: 1, column: 3 } } }

API

Example

var Snapdragon = require('snapdragon');
var captureSet = require('snapdragon-capture-set');

// snapdragon
var snapdragon = new Snapdragon();
snapdragon.use(captureSet());

// parser
snapdragon.parser.use(captureSet());

Create a node of the given type using the specified regex or function.

Params

  • type {String}
  • regex {RegExp|Function}: Pass the regex to use for capturing the open and close nodes.
  • returns {Object}: Returns the parser instance for chaining

Example

parser.captureSet('brace', /^\{/, /^\}/);

About

Related projects

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Please read the contributing guide for advice on opening issues, pull requests, and coding standards.

Building docs

(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in .verb.md.)

To generate the readme and API documentation with verb:

$ npm install -g verb verb-generate-readme && verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2017, Jon Schlinkert. Released under the MIT license.


This file was generated by verb-generate-readme, v0.4.1, on January 21, 2017.

About

Plugin that adds a `.captureSet()` method to snapdragon, for matching and capturing substrings that have an `open` and `close`, like braces, brackets, etc

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  
  •  

Packages

No packages published