Sha256: 7e29aa39503648b6b410de4875ac7bac795e2569a8609549dcc6e17ceb68184f

Contents?: true

Size: 1.89 KB

Versions: 6

Compression:

Stored size: 1.89 KB

Contents

const { align, concat, group, ifBreak, join, line } = require("../prettier");
const { docLength, makeArgs, makeCall } = require("../utils");

const hasDef = node =>
  node.body[1].type === "args_add_block" &&
  node.body[1].body[0].type === "args" &&
  node.body[1].body[0].body[0] &&
  node.body[1].body[0].body[0].type === "def";

module.exports = {
  command: (path, opts, print) => {
    const command = path.call(print, "body", 0);
    const { args, heredocs } = makeArgs(path, opts, print, 1);

    if (heredocs.length > 1) {
      return concat([command, " ", join(", ", args)].concat(heredocs));
    }

    const joinedArgs = join(concat([",", line]), args);
    const breakArgs = hasDef(path.getValue())
      ? joinedArgs
      : align(command.length + 1, joinedArgs);

    const commandDoc = group(
      ifBreak(
        concat([command, " ", breakArgs]),
        concat([command, " ", joinedArgs])
      )
    );

    if (heredocs.length === 1) {
      return group(concat([commandDoc].concat(heredocs)));
    }

    return commandDoc;
  },
  command_call: (path, opts, print) => {
    const parts = [
      path.call(print, "body", 0),
      makeCall(path, opts, print),
      path.call(print, "body", 2)
    ];

    if (!path.getValue().body[3]) {
      return concat(parts);
    }

    parts.push(" ");
    const { args, heredocs } = makeArgs(path, opts, print, 3);

    if (heredocs.length > 1) {
      return concat(parts.concat([join(", ", args)]).concat(heredocs));
    }

    const joinedArgs = join(concat([",", line]), args);
    const breakArgs =
      path.getValue().body[2].body === "to"
        ? joinedArgs
        : align(docLength(concat(parts)), joinedArgs);

    const commandDoc = group(
      ifBreak(concat(parts.concat(breakArgs)), concat(parts.concat(joinedArgs)))
    );

    if (heredocs.length === 1) {
      return group(concat([commandDoc].concat(heredocs)));
    }

    return commandDoc;
  }
};

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
prettier-0.16.0 src/nodes/commands.js
prettier-0.15.1 src/nodes/commands.js
prettier-0.15.0 src/nodes/commands.js
prettier-0.14.0 src/nodes/commands.js
prettier-0.13.0 src/nodes/commands.js
prettier-0.12.3 src/nodes/commands.js