src/nodes/case.js in prettier-1.2.0 vs src/nodes/case.js in prettier-1.2.1

- old
+ new

@@ -6,56 +6,60 @@ hardline, indent, line } = require("../prettier"); -module.exports = { - case: (path, opts, print) => { - const statement = ["case"]; +function printCase(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)); - } + // 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; + return concat( + statement.concat([hardline, path.call(print, "body", 1), hardline, "end"]) + ); +} - // 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]; - } +function printWhen(path, opts, print) { + const [_preds, _stmts, addition] = path.getValue().body; - // 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) - ); + // 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]; + } - const stmts = path.call(print, "body", 1); - const parts = [concat(["when ", align("when ".length, preds)])]; + // 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) + ); - // 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]))); - } + const stmts = path.call(print, "body", 1); + const parts = [concat(["when ", align("when ".length, preds)])]; - // 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)); - } + // 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]))); + } - return group(concat(parts)); + // 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)); +} + +module.exports = { + case: printCase, + when: printWhen };