Skip to content

Commit 96ec06d

Browse files
committed
Add support for spread next to loose
This commit adds support for `spread`, introduced in remark@10.0.0, which is replacing `loose`. This PR is backwards compatible, and thus can be released as a minor. See: <remarkjs/remark@aab3c3e>
1 parent 4e651a4 commit 96ec06d

File tree

18 files changed

+109
-0
lines changed

18 files changed

+109
-0
lines changed

lib/insert.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,21 @@ function insert(node, parent, tight) {
8282
* Properly style list-items with new lines.
8383
*/
8484

85+
parent.spread = !tight;
86+
87+
if (parent.type === LIST && parent.spread) {
88+
parent.spread = false;
89+
index = -1;
90+
91+
while (++index < length) {
92+
if (children[index].children.length > 1) {
93+
parent.spread = true;
94+
break;
95+
}
96+
}
97+
}
98+
99+
// To do: remove `loose` in next major release.
85100
if (parent.type === LIST_ITEM) {
86101
parent.loose = tight ? false : children.length > 1;
87102
} else {

lib/list-item.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ var LIST_ITEM = 'listItem';
2020
function listItem() {
2121
return {
2222
type: LIST_ITEM,
23+
// To do: remove `loose` in next major.
2324
loose: false,
25+
spread: false,
2426
children: []
2527
};
2628
}

lib/list.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ function list() {
2121
return {
2222
type: LIST,
2323
ordered: false,
24+
spread: false,
2425
children: []
2526
};
2627
}

test/fixtures/custom-heading/output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": false,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": false,
38+
"spread": false,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -54,6 +58,7 @@
5458
{
5559
"type": "listItem",
5660
"loose": false,
61+
"spread": false,
5762
"children": [
5863
{
5964
"type": "paragraph",
@@ -80,6 +85,7 @@
8085
{
8186
"type": "listItem",
8287
"loose": false,
88+
"spread": false,
8389
"children": [
8490
{
8591
"type": "paragraph",

test/fixtures/deep-headings/output.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": false,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": false,
38+
"spread": false,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -58,6 +62,7 @@
5862
{
5963
"type": "listItem",
6064
"loose": false,
65+
"spread": false,
6166
"children": [
6267
{
6368
"type": "paragraph",

test/fixtures/image-in-link-in-heading/output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": false,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": false,
38+
"spread": false,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -54,6 +58,7 @@
5458
{
5559
"type": "listItem",
5660
"loose": false,
61+
"spread": false,
5762
"children": [
5863
{
5964
"type": "paragraph",
@@ -80,6 +85,7 @@
8085
{
8186
"type": "listItem",
8287
"loose": false,
88+
"spread": false,
8389
"children": [
8490
{
8591
"type": "paragraph",

test/fixtures/maximum-depth-1/output.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": false,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": false,
12+
"spread": false,
1113
"children": [
1214
{
1315
"type": "paragraph",

test/fixtures/maximum-depth-3/output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": true,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": true,
38+
"spread": true,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -52,10 +56,12 @@
5256
{
5357
"type": "list",
5458
"ordered": false,
59+
"spread": false,
5560
"children": [
5661
{
5762
"type": "listItem",
5863
"loose": false,
64+
"spread": false,
5965
"children": [
6066
{
6167
"type": "paragraph",

test/fixtures/maximum-depth-6/output.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": true,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": true,
38+
"spread": true,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -52,10 +56,12 @@
5256
{
5357
"type": "list",
5458
"ordered": false,
59+
"spread": true,
5560
"children": [
5661
{
5762
"type": "listItem",
5863
"loose": true,
64+
"spread": true,
5965
"children": [
6066
{
6167
"type": "paragraph",
@@ -76,10 +82,12 @@
7682
{
7783
"type": "list",
7884
"ordered": false,
85+
"spread": true,
7986
"children": [
8087
{
8188
"type": "listItem",
8289
"loose": true,
90+
"spread": true,
8391
"children": [
8492
{
8593
"type": "paragraph",
@@ -100,10 +108,12 @@
100108
{
101109
"type": "list",
102110
"ordered": false,
111+
"spread": true,
103112
"children": [
104113
{
105114
"type": "listItem",
106115
"loose": true,
116+
"spread": true,
107117
"children": [
108118
{
109119
"type": "paragraph",
@@ -124,10 +134,12 @@
124134
{
125135
"type": "list",
126136
"ordered": false,
137+
"spread": false,
127138
"children": [
128139
{
129140
"type": "listItem",
130141
"loose": false,
142+
"spread": false,
131143
"children": [
132144
{
133145
"type": "paragraph",

test/fixtures/normal-attr/output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": false,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": false,
38+
"spread": false,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -54,6 +58,7 @@
5458
{
5559
"type": "listItem",
5660
"loose": false,
61+
"spread": false,
5762
"children": [
5863
{
5964
"type": "paragraph",
@@ -80,6 +85,7 @@
8085
{
8186
"type": "listItem",
8287
"loose": false,
88+
"spread": false,
8389
"children": [
8490
{
8591
"type": "paragraph",

test/fixtures/normal-literal-dashes/output.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
"map": {
55
"type": "list",
66
"ordered": false,
7+
"spread": true,
78
"children": [
89
{
910
"type": "listItem",
1011
"loose": true,
12+
"spread": true,
1113
"children": [
1214
{
1315
"type": "paragraph",
@@ -28,10 +30,12 @@
2830
{
2931
"type": "list",
3032
"ordered": false,
33+
"spread": false,
3134
"children": [
3235
{
3336
"type": "listItem",
3437
"loose": false,
38+
"spread": false,
3539
"children": [
3640
{
3741
"type": "paragraph",
@@ -58,6 +62,7 @@
5862
{
5963
"type": "listItem",
6064
"loose": false,
65+
"spread": false,
6166
"children": [
6267
{
6368
"type": "paragraph",

0 commit comments

Comments
 (0)