Skip to content

Commit 28eb028

Browse files
committed
add curried forms
1 parent 4d1d68a commit 28eb028

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,15 @@ All the relevant parts of [Selectors Level 3][spec]:
8282

8383
## API
8484

85-
#### `select(ast, selector)`
85+
### `select(ast, selector)`
86+
87+
*Curried form: `select(ast)(selector)`*
8688

8789
Applies `selector` to `ast`, returns array of matching nodes.
8890

89-
#### `select.one(ast, selector)`
91+
### `select.one(ast, selector)`
92+
93+
*Curried form: `select.one(ast)(selector)`*
9094

9195
Returns a single node matching `selector`.
9296

index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ var debug = require('debug')('unist-util-select');
77

88

99
var select = function select (ast, selector) {
10+
if (arguments.length == 1) {
11+
return select.bind(this, ast);
12+
}
13+
1014
debug('Selector: %j', selector);
1115
selector = parseSelector(selector);
1216
debug('AST: %s',
@@ -16,6 +20,10 @@ var select = function select (ast, selector) {
1620

1721

1822
select.one = function selectOne (ast, selector) {
23+
if (arguments.length == 1) {
24+
return selectOne.bind(this, ast);
25+
}
26+
1927
var nodes = select(ast, selector);
2028

2129
if (!nodes.length) {

test/curried.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
'use strict';
2+
3+
var select = require('..'),
4+
ast = require('./lib/ast')();
5+
6+
var test = require('tape');
7+
8+
9+
test('curried forms', function (t) {
10+
t.deepEqual(select(ast)('paragraph'), select(ast, 'paragraph'));
11+
t.equal(select.one(ast)('table'), select.one(ast, 'table'));
12+
t.end();
13+
});

test/select-one.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
var select = require('..'),
44
select1 = select.one,
5-
ast = require('./lib/ast')(),
6-
path = require('./lib/path');
5+
ast = require('./lib/ast')();
76

87
var test = require('tape');
98

0 commit comments

Comments
 (0)