Skip to content

Commit 4098199

Browse files
committed
remove empty paragraphs throughout the whole tree
1 parent 38c13a6 commit 4098199

File tree

4 files changed

+38
-9
lines changed

4 files changed

+38
-9
lines changed

index.js

+11-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
'use strict';
22

3+
var remove = require('unist-util-remove');
34

4-
module.exports = function (ast) {
5-
ast.children = ast.children.filter(function (node) {
6-
return node.type != 'paragraph' || node.children.some(function (node) {
7-
return node.type != 'text' || !/^\s*$/.test(node.value);
8-
});
9-
});
105

11-
return ast;
6+
module.exports = function (ast) {
7+
return remove(ast, { cascade: false }, isEmptyParagraph);
128
};
9+
10+
11+
// Whether paragraph is empty or composed only of whitespace.
12+
function isEmptyParagraph (node) {
13+
return node.type == 'paragraph' && node.children.every(function (node) {
14+
return node.type == 'text' && /^\s*$/.test(node.value);
15+
});
16+
}

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
"util",
2929
"clean"
3030
],
31-
"dependencies": {},
31+
"dependencies": {
32+
"unist-util-remove": "^0.2.0"
33+
},
3234
"devDependencies": {
3335
"tape": "^4.0.0",
3436
"unist-builder": "^1.0.0"

test/data/input.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@ module.exports = function () {
1919
u('text', ' '),
2020
u('text', 'value')
2121
]),
22-
u('paragraph', [])
22+
u('paragraph', []),
23+
u('list', {
24+
ordered: false,
25+
start: null,
26+
loose: false
27+
}, [
28+
u('listItem', { loose: false }, [
29+
u('paragraph', [])
30+
]),
31+
u('listItem', { loose: false }, [
32+
u('paragraph', [
33+
u('text', ' '),
34+
u('text', ' ')
35+
])
36+
])
37+
])
2338
]);
2439
};

test/data/output.js

+8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ module.exports = function () {
1212
u('text', 'second'),
1313
u('text', ' '),
1414
u('text', 'value')
15+
]),
16+
u('list', {
17+
ordered: false,
18+
start: null,
19+
loose: false
20+
}, [
21+
u('listItem', { loose: false }, []),
22+
u('listItem', { loose: false }, [])
1523
])
1624
]);
1725
};

0 commit comments

Comments
 (0)