1.0.10 • Published 8 years ago

ast-check v1.0.10

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

ast-check

Check ast for specified pattern.

Usage

var matcher = require('ast-check').matcher;

var m = matcher();

m.
  // We define goals to match some code
  goal('init.var').
    code('var i = "#var.value"'). // "#fragment.name" will be replaced
                                  //   with fragment's code on matching
    assign('var.value', 'value.answer').
  // Several goals may be defined to inherit code
  goal('init.var.parrots').
    // Just take another goal
    takes('init.var').
    // And reassign some of fragments
    assign('var.value', 'value.parrots').
  goal('init.var.variants').
    takes('init.var').
    // When several variants are possible..
    assign('var.value', 'value.variants').
  goal('init.var.anything').
    // When we need wildcard in init part
    assign('var.value', 'builtin.anything').
  fragment('value.answer').
    code('42').
  fragment('value.parrots').
    code('38').
  fragment('value.variants').
    code('38', '42'); // fragment's code may have several variants

m.match('init.var')('var i = 42'); // => true
m.match('init.var')('var i = 38'); // => false

m.match('init.var.parrots')('var i = 42'); // => false
m.match('init.var.parrots')('var i = 38'); // => true

m.match('init.var.variants')('var i = 38'); // => true
m.match('init.var.variants')('var i = 42'); // => true

m.match('init.var.anything')('var i = 404'); // => true

Limitations

You should avoid situations when two builtin.anything are placed sequentally. In this case matching will not work as expected.

Dependencies

1.0.10

8 years ago

1.0.9

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago