diff --git a/src/language-markdown/embed.js b/src/language-markdown/embed.js index d70cf6a1..85fdc360 100644 --- a/src/language-markdown/embed.js +++ b/src/language-markdown/embed.js @@ -18,7 +18,13 @@ function embed(path, print, textToDoc, options) { Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1) ); const doc = textToDoc(node.value, { parser }); - return concat([style, node.lang, hardline, doc, style]); + return concat([ + style, + node.lang, + hardline, + replaceNewlinesWithHardlines(doc), + style + ]); } } @@ -38,6 +44,20 @@ function embed(path, print, textToDoc, options) { return null; } + + function replaceNewlinesWithHardlines(doc) { + return util.mapDoc( + doc, + currentDoc => + typeof currentDoc === "string" && currentDoc.includes("\n") + ? concat( + currentDoc + .split(/(\n)/g) + .map((v, i) => (i % 2 === 0 ? v : hardline)) + ) + : currentDoc + ); + } } module.exports = embed; diff --git a/tests/markdown_blockquote/__snapshots__/jsfmt.spec.js.snap b/tests/markdown_blockquote/__snapshots__/jsfmt.spec.js.snap index a2a6ce32..ec13bf63 100644 --- a/tests/markdown_blockquote/__snapshots__/jsfmt.spec.js.snap +++ b/tests/markdown_blockquote/__snapshots__/jsfmt.spec.js.snap @@ -35,6 +35,113 @@ exports[`code.md 1`] = ` `; +exports[`ignore-code.md 1`] = ` +> \`\`\`\`md +> +> \`\`\`js +> ugly ( code ) ; +> \`\`\` +> \`\`\`\` + +> \`\`\`md +> +> - This is a long long +> long long long long +> long long paragraph. +> \`\`\` + +> - test +> \`\`\`md +> +> - This is a long long +> long long long long +> long long paragraph. +> \`\`\` + +\`\`\`\`md +> \`\`\`md +> +> - This is a long long +> long long long long +> long long paragraph. +> \`\`\` +\`\`\`\` + +> \`\`\`\`md +> > \`\`\`md +> > +> > - This is a long long +> > long long long long +> > long long paragraph. +> > \`\`\` +> \`\`\`\` + +> +> +> - This is a long long +> long long long long +> long long paragraph. +> + +> \`\`\`\`js +> // prettier-ignore +> const x = 1, +> b = 2 +> \`\`\`\` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> \`\`\`\`md +> +> \`\`\`js +> ugly ( code ) ; +> \`\`\` +> \`\`\`\` + +> \`\`\`md +> +> - This is a long long +> long long long long +> long long paragraph. +> \`\`\` + +> * test +> \`\`\`md +> +> - This is a long long +> long long long long +> long long paragraph. +> \`\`\` + +\`\`\`\`md +> \`\`\`md +> +> - This is a long long +> long long long long +> long long paragraph. +> \`\`\` +\`\`\`\` + +> \`\`\`\`md +> > \`\`\`md +> > +> > - This is a long long +> > long long long long +> > long long paragraph. +> > \`\`\` +> \`\`\`\` + +> +> - This is a long long +> long long long long +> long long paragraph. + +> \`\`\`js +> // prettier-ignore +> const x = 1, +> b = 2 +> \`\`\` + +`; + exports[`nested.md 1`] = ` >>> 123 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/markdown_blockquote/ignore-code.md b/tests/markdown_blockquote/ignore-code.md new file mode 100644 index 00000000..b2d8a74d --- /dev/null +++ b/tests/markdown_blockquote/ignore-code.md @@ -0,0 +1,52 @@ +> ````md +> +> ```js +> ugly ( code ) ; +> ``` +> ```` + +> ```md +> +> - This is a long long +> long long long long +> long long paragraph. +> ``` + +> - test +> ```md +> +> - This is a long long +> long long long long +> long long paragraph. +> ``` + +````md +> ```md +> +> - This is a long long +> long long long long +> long long paragraph. +> ``` +```` + +> ````md +> > ```md +> > +> > - This is a long long +> > long long long long +> > long long paragraph. +> > ``` +> ```` + +> +> +> - This is a long long +> long long long long +> long long paragraph. +> + +> ````js +> // prettier-ignore +> const x = 1, +> b = 2 +> ````