Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 55x 448x 1888x 278x 278x 1788x 1863x 1863x 448x 278x 278x 4x 274x 170x 1414x 1x 55x | const { doc: { builders: { hardline, join } }, util: { hasNewline } } = require('prettier'); function isIndentableBlockComment(comment) { // If the comment has multiple lines and every line starts with a star // we can fix the indentation of each line. The stars in the `/*` and // `*/` delimiters are not included in the comment value, so add them // back first. const lines = `*${comment.raw}*`.split('\n'); return lines.length > 1 && lines.every((line) => line.trim()[0] === '*'); } function printIndentableBlockComment(comment) { const lines = comment.raw.split('\n'); return [ '/*', join( hardline, lines.map((line, index) => index === 0 ? line.trimEnd() : ` ${index < lines.length - 1 ? line.trim() : line.trimStart()}` ) ), '*/' ]; } function printComment(commentPath, options) { const comment = commentPath.getValue(); switch (comment.type) { case 'BlockComment': { if (isIndentableBlockComment(comment)) { const printed = printIndentableBlockComment(comment); // We need to prevent an edge case of a previous trailing comment // printed as a `lineSuffix` which causes the comments to be // interleaved. See https://github.com/prettier/prettier/issues/4412 if ( comment.trailing && !hasNewline(options.originalText, options.locStart(comment), { backwards: true }) ) { return [hardline, printed]; } return printed; } return `/*${comment.raw}*/`; } case 'LineComment': return `//${comment.raw.trimEnd()}`; default: throw new Error(`Not a comment: ${JSON.stringify(comment)}`); } } module.exports = printComment; |