From 4e651a4da93ae6dec9922b84363f3cc431a52bd1 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Mon, 22 Oct 2018 17:20:52 +0200 Subject: [PATCH 1/2] Update dev-dependencies --- README.md | 2 +- lib/index.js | 2 +- package.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ab556cf..fa5fe00 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Yields: map: { type: 'list', ordered: false, - children: [ { type: 'listItem', loose: true, children: [Object] } ] } } + children: [ { type: 'listItem', loose: true, children: [Array] } ] } } ``` ## API diff --git a/lib/index.js b/lib/index.js index 91d5aad..d90616e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -27,7 +27,7 @@ function toc(node, options) { var result = search(node, heading, settings.maxDepth || 6); var map = result.map; - result.map = map.length ? contents(map, settings.tight) : null; + result.map = map.length === 0 ? null : contents(map, settings.tight); /* No given heading */ if (!heading) { diff --git a/package.json b/package.json index d878900..d3fd76d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "browserify": "^16.2.1", "esmangle": "^1.0.1", "istanbul": "^0.4.4", - "remark-attr": "^0.6.2", + "remark-attr": "^0.7.0", "remark": "^10.0.0", "remark-cli": "^6.0.0", "remark-comment-config": "^5.0.0", @@ -52,7 +52,7 @@ "remark-usage": "^6.0.0", "remark-validate-links": "^7.0.0", "tape": "^4.6.0", - "xo": "^0.21.1" + "xo": "^0.23.0" }, "xo": { "space": 4, From 96ec06df74b11059b0a2a168ade4d82b2b8afea8 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Mon, 22 Oct 2018 18:59:47 +0200 Subject: [PATCH 2/2] 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: --- lib/insert.js | 15 +++++++++++++++ lib/list-item.js | 2 ++ lib/list.js | 1 + test/fixtures/custom-heading/output.json | 6 ++++++ test/fixtures/deep-headings/output.json | 5 +++++ .../fixtures/image-in-link-in-heading/output.json | 6 ++++++ test/fixtures/maximum-depth-1/output.json | 2 ++ test/fixtures/maximum-depth-3/output.json | 6 ++++++ test/fixtures/maximum-depth-6/output.json | 12 ++++++++++++ test/fixtures/normal-attr/output.json | 6 ++++++ test/fixtures/normal-literal-dashes/output.json | 5 +++++ test/fixtures/normal-nesting-inverted/output.json | 8 ++++++++ test/fixtures/normal-singular/output.json | 6 ++++++ test/fixtures/normal-toc/output.json | 6 ++++++ test/fixtures/normal/output.json | 6 ++++++ .../slug-for-images-and-links/output.json | 6 ++++++ test/fixtures/tight/output.json | 9 +++++++++ test/fixtures/unicode/output.json | 2 ++ 18 files changed, 109 insertions(+) diff --git a/lib/insert.js b/lib/insert.js index 53bb399..98dac03 100644 --- a/lib/insert.js +++ b/lib/insert.js @@ -82,6 +82,21 @@ function insert(node, parent, tight) { * Properly style list-items with new lines. */ + parent.spread = !tight; + + if (parent.type === LIST && parent.spread) { + parent.spread = false; + index = -1; + + while (++index < length) { + if (children[index].children.length > 1) { + parent.spread = true; + break; + } + } + } + + // To do: remove `loose` in next major release. if (parent.type === LIST_ITEM) { parent.loose = tight ? false : children.length > 1; } else { diff --git a/lib/list-item.js b/lib/list-item.js index 42dd30e..f2a81ac 100644 --- a/lib/list-item.js +++ b/lib/list-item.js @@ -20,7 +20,9 @@ var LIST_ITEM = 'listItem'; function listItem() { return { type: LIST_ITEM, + // To do: remove `loose` in next major. loose: false, + spread: false, children: [] }; } diff --git a/lib/list.js b/lib/list.js index 6708fd3..5d22e78 100644 --- a/lib/list.js +++ b/lib/list.js @@ -21,6 +21,7 @@ function list() { return { type: LIST, ordered: false, + spread: false, children: [] }; } diff --git a/test/fixtures/custom-heading/output.json b/test/fixtures/custom-heading/output.json index bbf2d32..791c20f 100644 --- a/test/fixtures/custom-heading/output.json +++ b/test/fixtures/custom-heading/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/deep-headings/output.json b/test/fixtures/deep-headings/output.json index e493807..b4a3080 100644 --- a/test/fixtures/deep-headings/output.json +++ b/test/fixtures/deep-headings/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -58,6 +62,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/image-in-link-in-heading/output.json b/test/fixtures/image-in-link-in-heading/output.json index 51696d6..b7e732b 100644 --- a/test/fixtures/image-in-link-in-heading/output.json +++ b/test/fixtures/image-in-link-in-heading/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/maximum-depth-1/output.json b/test/fixtures/maximum-depth-1/output.json index d3c9174..206df3b 100644 --- a/test/fixtures/maximum-depth-1/output.json +++ b/test/fixtures/maximum-depth-1/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/maximum-depth-3/output.json b/test/fixtures/maximum-depth-3/output.json index dec6535..b0ec00a 100644 --- a/test/fixtures/maximum-depth-3/output.json +++ b/test/fixtures/maximum-depth-3/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -52,10 +56,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/maximum-depth-6/output.json b/test/fixtures/maximum-depth-6/output.json index 77b8a13..aa6c241 100644 --- a/test/fixtures/maximum-depth-6/output.json +++ b/test/fixtures/maximum-depth-6/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -52,10 +56,12 @@ { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -76,10 +82,12 @@ { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -100,10 +108,12 @@ { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -124,10 +134,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/normal-attr/output.json b/test/fixtures/normal-attr/output.json index 088b573..749acb6 100644 --- a/test/fixtures/normal-attr/output.json +++ b/test/fixtures/normal-attr/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/normal-literal-dashes/output.json b/test/fixtures/normal-literal-dashes/output.json index 234e1b9..faf74ff 100644 --- a/test/fixtures/normal-literal-dashes/output.json +++ b/test/fixtures/normal-literal-dashes/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -58,6 +62,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/normal-nesting-inverted/output.json b/test/fixtures/normal-nesting-inverted/output.json index 485139f..24f4531 100644 --- a/test/fixtures/normal-nesting-inverted/output.json +++ b/test/fixtures/normal-nesting-inverted/output.json @@ -4,18 +4,22 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -42,6 +46,7 @@ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -62,10 +67,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -92,6 +99,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/normal-singular/output.json b/test/fixtures/normal-singular/output.json index 51696d6..b7e732b 100644 --- a/test/fixtures/normal-singular/output.json +++ b/test/fixtures/normal-singular/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/normal-toc/output.json b/test/fixtures/normal-toc/output.json index 51696d6..b7e732b 100644 --- a/test/fixtures/normal-toc/output.json +++ b/test/fixtures/normal-toc/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/normal/output.json b/test/fixtures/normal/output.json index 51696d6..b7e732b 100644 --- a/test/fixtures/normal/output.json +++ b/test/fixtures/normal/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/slug-for-images-and-links/output.json b/test/fixtures/slug-for-images-and-links/output.json index b5d1555..c6a96f0 100644 --- a/test/fixtures/slug-for-images-and-links/output.json +++ b/test/fixtures/slug-for-images-and-links/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": true, "children": [ { "type": "listItem", "loose": true, + "spread": true, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -80,6 +85,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/tight/output.json b/test/fixtures/tight/output.json index c333471..274c9a5 100644 --- a/test/fixtures/tight/output.json +++ b/test/fixtures/tight/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -28,10 +30,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -54,6 +58,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -74,10 +79,12 @@ { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -100,6 +107,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", @@ -130,6 +138,7 @@ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph", diff --git a/test/fixtures/unicode/output.json b/test/fixtures/unicode/output.json index 346c047..b639289 100644 --- a/test/fixtures/unicode/output.json +++ b/test/fixtures/unicode/output.json @@ -4,10 +4,12 @@ "map": { "type": "list", "ordered": false, + "spread": false, "children": [ { "type": "listItem", "loose": false, + "spread": false, "children": [ { "type": "paragraph",