Sha256: 2fe905d907fc503e34ce7945693f7a2a40d8522175d0a7fa265a83d6cbfa90f4
Contents?: true
Size: 1.75 KB
Versions: 5
Compression:
Stored size: 1.75 KB
Contents
const { align, concat, fill, group, hardline, indent, line } = require("../prettier"); module.exports = { case: (path, opts, print) => { const statement = ["case"]; // You don't need to explicitly have something to test against in a case // statement (without it it effectively becomes an if/elsif chain). if (path.getValue().body[0]) { statement.push(" ", path.call(print, "body", 0)); } return concat( statement.concat([hardline, path.call(print, "body", 1), hardline, "end"]) ); }, when: (path, opts, print) => { const [_preds, _stmts, addition] = path.getValue().body; // The `fill` builder command expects an array of docs alternating with // line breaks. This is so it can loop through and determine where to break. const preds = fill( path.call(print, "body", 0).reduce((accum, pred, index) => { if (index === 0) { return [pred]; } // Pull off the last element and make it concat with a comma so that // we can maintain alternating lines and docs. return accum .slice(0, -1) .concat([concat([accum[accum.length - 1], ","]), line, pred]); }, null) ); const stmts = path.call(print, "body", 1); const parts = [concat(["when ", align("when ".length, preds)])]; // It's possible in a when to just have empty void statements, in which case // we would skip adding the body. if (!stmts.parts.every((part) => !part)) { parts.push(indent(concat([hardline, stmts]))); } // This is the next clause on the case statement, either another `when` or // an `else` clause. if (addition) { parts.push(hardline, path.call(print, "body", 2)); } return group(concat(parts)); } };
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
prettier-1.2.0 | src/nodes/case.js |
prettier-1.1.0 | src/nodes/case.js |
prettier-1.0.1 | src/nodes/case.js |
prettier-1.0.0 | src/nodes/case.js |
prettier-1.0.0.pre.rc2 | src/nodes/case.js |