diff --git a/src/clean-ast.js b/src/clean-ast.js index aeef5138e..44419e66d 100644 --- a/src/clean-ast.js +++ b/src/clean-ast.js @@ -236,7 +236,8 @@ function massageAST(ast, parent) { (ast.tag.name === "gql" || ast.tag.name === "graphql" || ast.tag.name === "css" || - ast.tag.name === "md")) || + ast.tag.name === "md" || + ast.tag.name === "markdown")) || ast.tag.type === "CallExpression") ) { newObj.quasi.quasis.forEach(quasi => delete quasi.value); diff --git a/src/multiparser.js b/src/multiparser.js index 62963433e..b0c007d9c 100644 --- a/src/multiparser.js +++ b/src/multiparser.js @@ -180,7 +180,8 @@ function fromBabylonFlowOrTypeScript(path) { } function dedent(str) { - const spaces = str.match(/\n^( *)/m)[1].length; + const firstMatchedIndent = str.match(/\n^( *)/m); + const spaces = firstMatchedIndent === null ? 0 : firstMatchedIndent[1].length; return str.replace(new RegExp(`^ {${spaces}}`, "gm"), "").trim(); } diff --git a/src/printer-markdown.js b/src/printer-markdown.js index 5dd0331c3..0af677e07 100644 --- a/src/printer-markdown.js +++ b/src/printer-markdown.js @@ -66,9 +66,10 @@ function genericPrint(path, options, print) { switch (node.type) { case "root": - return normalizeDoc( - concat([printChildren(path, options, print), hardline]) - ); + return concat([ + normalizeDoc(printChildren(path, options, print)), + hardline + ]); case "paragraph": return printChildren(path, options, print, { postprocessor: fill diff --git a/tests/multiparser_js_markdown/__snapshots__/jsfmt.spec.js.snap b/tests/multiparser_js_markdown/__snapshots__/jsfmt.spec.js.snap index 0726156f0..53246b1cb 100644 --- a/tests/multiparser_js_markdown/__snapshots__/jsfmt.spec.js.snap +++ b/tests/multiparser_js_markdown/__snapshots__/jsfmt.spec.js.snap @@ -17,10 +17,8 @@ md\` ~~~js console.log("hi"); ~~~ - \\\`; ~~~ - \`; `; @@ -73,8 +71,16 @@ export default function ReadMe() { because he has a million decisions to make and he didn't want to be bothered to make trivial ones like picking out clothes. I think Prettier is like that.” - \`; } `; + +exports[`single-line.js 1`] = ` +markdown\`# hello\` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +markdown\` + # hello +\`; + +`; diff --git a/tests/multiparser_js_markdown/single-line.js b/tests/multiparser_js_markdown/single-line.js new file mode 100644 index 000000000..3f4fde27d --- /dev/null +++ b/tests/multiparser_js_markdown/single-line.js @@ -0,0 +1 @@ +markdown`# hello`