fix(markdown): replace newlines with hardlines in multiparser (#3611)

* test: add failing test

* fix(markdown): replace newlines with hardlines in multiparser
master
Ika 2017-12-30 23:33:58 +08:00 committed by Jed Fox
parent 0af436cd47
commit 6872ed8310
3 changed files with 180 additions and 1 deletions

View File

@ -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;

View File

@ -35,6 +35,113 @@ exports[`code.md 1`] = `
`;
exports[`ignore-code.md 1`] = `
> \`\`\`\`md
> <!-- prettier-ignore -->
> \`\`\`js
> ugly ( code ) ;
> \`\`\`
> \`\`\`\`
> \`\`\`md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> \`\`\`
> - test
> \`\`\`md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> \`\`\`
\`\`\`\`md
> \`\`\`md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> \`\`\`
\`\`\`\`
> \`\`\`\`md
> > \`\`\`md
> > <!-- prettier-ignore -->
> > - This is a long long
> > long long long long
> > long long paragraph.
> > \`\`\`
> \`\`\`\`
>
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
>
> \`\`\`\`js
> // prettier-ignore
> const x = 1,
> b = 2
> \`\`\`\`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> \`\`\`\`md
> <!-- prettier-ignore -->
> \`\`\`js
> ugly ( code ) ;
> \`\`\`
> \`\`\`\`
> \`\`\`md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> \`\`\`
> * test
> \`\`\`md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> \`\`\`
\`\`\`\`md
> \`\`\`md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> \`\`\`
\`\`\`\`
> \`\`\`\`md
> > \`\`\`md
> > <!-- prettier-ignore -->
> > - This is a long long
> > long long long long
> > long long paragraph.
> > \`\`\`
> \`\`\`\`
> <!-- prettier-ignore -->
> - 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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -0,0 +1,52 @@
> ````md
> <!-- prettier-ignore -->
> ```js
> ugly ( code ) ;
> ```
> ````
> ```md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> ```
> - test
> ```md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> ```
````md
> ```md
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
> ```
````
> ````md
> > ```md
> > <!-- prettier-ignore -->
> > - This is a long long
> > long long long long
> > long long paragraph.
> > ```
> ````
>
> <!-- prettier-ignore -->
> - This is a long long
> long long long long
> long long paragraph.
>
> ````js
> // prettier-ignore
> const x = 1,
> b = 2
> ````