remove-markdown 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,6 @@
1
- - ![default workflow](https://github.com/stiang/remove-markdown/actions/workflows/default.yaml/badge.svg)
1
+ [![npm version](https://img.shields.io/npm/v/remove-markdown.svg)](https://www.npmjs.com/package/remove-markdown)
2
+ [![npm downloads](https://img.shields.io/npm/dm/remove-markdown.svg)](https://npm-compare.com/remove-markdown/#timeRange=THREE_YEARS)
3
+ [![GitHub Actions Build Status](https://github.com/zuchka/remove-markdown/actions/workflows/default.yaml/badge.svg)](https://github.com/zuchka/remove-markdown/actions/workflows/default.yaml)
2
4
 
3
5
  ## What is it?
4
6
  **remove-markdown** is a node.js module that will remove (strip) Markdown formatting from text.
package/index.js CHANGED
@@ -29,8 +29,8 @@ module.exports = function(md, options) {
29
29
  .replace(/~{3}.*\n/g, '')
30
30
  // Strikethrough
31
31
  .replace(/~~/g, '')
32
- // Fenced codeblocks
33
- .replace(/`{3}.*\n/g, '');
32
+ // Fenced codeblocks with backticks
33
+ .replace(/```(?:.*)\n([\s\S]*?)```/g, (_, code) => code.trim());
34
34
  }
35
35
  if (options.abbr) {
36
36
  // Remove abbreviations
@@ -58,7 +58,7 @@ module.exports = function(md, options) {
58
58
  // Remove images
59
59
  .replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, options.useImgAltText ? '$1' : '')
60
60
  // Remove inline links
61
- .replace(/\[([^\]]*?)\][\[\(].*?[\]\)]/g, options.replaceLinksWithURL ? '$2' : '$1')
61
+ .replace(/\[([\s\S]*?)\]\s*[\(\[].*?[\)\]]/g, options.replaceLinksWithURL ? '$2' : '$1')
62
62
  // Remove blockquotes
63
63
  .replace(/^(\n)?\s{0,3}>\s?/gm, '$1')
64
64
  // .replace(/(^|\n)\s{0,3}>\s?/g, '\n\n')
@@ -72,7 +72,7 @@ module.exports = function(md, options) {
72
72
  // 1. Either there is a whitespace character before opening _ and after closing _.
73
73
  // 2. Or _ is at the start/end of the string.
74
74
  .replace(/(^|\W)([_]+)(\S)(.*?\S)??\2($|\W)/g, '$1$3$4$5')
75
- // Remove code blocks
75
+ // Remove single-line code blocks (already handled multiline above in gfm section)
76
76
  .replace(/(`{3,})(.*?)\1/gm, '$2')
77
77
  // Remove inline code
78
78
  .replace(/`(.+?)`/g, '$1')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remove-markdown",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Remove Markdown formatting from text",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -57,6 +57,24 @@ describe('remove Markdown', function () {
57
57
  expect(removeMd(string)).to.equal(expected);
58
58
  });
59
59
 
60
+ it('should strip simple multiline code tags', function () {
61
+ const string = '```\ncode\n```';
62
+ const expected = 'code';
63
+ expect(removeMd(string)).to.equal(expected);
64
+ });
65
+
66
+ it('should strip complex multiline code blocks with language specified', function () {
67
+ const string = '```javascript\nconst x = 1;\nconst y = 2;\nconsole.log(x + y);\n```';
68
+ const expected = 'const x = 1;\nconst y = 2;\nconsole.log(x + y);';
69
+ expect(removeMd(string)).to.equal(expected);
70
+ });
71
+
72
+ it('should strip multiline code blocks with multiple paragraphs', function () {
73
+ const string = 'Text before\n\n```\ncode line 1\n\ncode line 2\n```\n\nText after';
74
+ const expected = 'Text before\n\ncode line 1\n\ncode line 2\n\nText after';
75
+ expect(removeMd(string)).to.equal(expected);
76
+ });
77
+
60
78
  it('should leave hashtags in headings', function () {
61
79
  const string = '## This #heading contains #hashtags';
62
80
  const expected = 'This #heading contains #hashtags';
@@ -179,6 +197,18 @@ describe('remove Markdown', function () {
179
197
  expect(removeMd(paragraph)).to.equal(expected);
180
198
  });
181
199
 
200
+ it('should remove links', function () {
201
+ const string = 'This is a [link](http://www.disney.com/).';
202
+ const expected = 'This is a link.';
203
+ expect(removeMd(string)).to.equal(expected);
204
+ });
205
+
206
+ it('should remove links with square brackets', function () {
207
+ const string = 'This is a [link [with brackets]](http://www.disney.com/).';
208
+ const expected = 'This is a link [with brackets].';
209
+ expect(removeMd(string)).to.equal(expected);
210
+ });
211
+
182
212
  it('should not strip paragraphs without content', function() {
183
213
  const paragraph = '\n#This paragraph\n##This paragraph#';
184
214
  const expected = paragraph;