prettier 0.18.0 → 0.18.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,7 +21,7 @@ module.exports = {
21
21
  paramsConcat = path.call(print, "body", 0, "body", 0);
22
22
  }
23
23
 
24
- const noParams = params.body.every(type => !type);
24
+ const noParams = params.body.every((type) => !type);
25
25
  const inlineLambda = concat([
26
26
  "->",
27
27
  noParams ? "" : concat(["(", paramsConcat, ")"]),
@@ -9,7 +9,7 @@ const {
9
9
  } = require("../prettier");
10
10
  const { first, literal } = require("../utils");
11
11
 
12
- const printMethod = offset => (path, opts, print) => {
12
+ const printMethod = (offset) => (path, opts, print) => {
13
13
  const [_name, params, body] = path.getValue().body.slice(offset);
14
14
  const declaration = ["def "];
15
15
 
@@ -21,7 +21,7 @@ const printMethod = offset => (path, opts, print) => {
21
21
 
22
22
  // In case there are no parens but there are arguments
23
23
  const parens =
24
- params.type === "params" && params.body.some(paramType => paramType);
24
+ params.type === "params" && params.body.some((paramType) => paramType);
25
25
 
26
26
  declaration.push(
27
27
  path.call(print, "body", offset),
@@ -7,10 +7,18 @@ module.exports = {
7
7
 
8
8
  return group(
9
9
  concat([
10
- concat([path.call(print, "body", 0), useNoSpace ? "" : " "]),
11
- operator,
10
+ group(path.call(print, "body", 0)),
12
11
  indent(
13
- concat([useNoSpace ? softline : line, path.call(print, "body", 2)])
12
+ concat([
13
+ useNoSpace ? "" : " ",
14
+ group(
15
+ concat([
16
+ operator,
17
+ useNoSpace ? softline : line,
18
+ path.call(print, "body", 2)
19
+ ])
20
+ )
21
+ ])
14
22
  )
15
23
  ])
16
24
  );
@@ -1,7 +1,7 @@
1
1
  const { concat, group, join, line } = require("../prettier");
2
2
  const { literal } = require("../utils");
3
3
 
4
- const printGenericRestParam = symbol => (path, opts, print) =>
4
+ const printGenericRestParam = (symbol) => (path, opts, print) =>
5
5
  path.getValue().body[0]
6
6
  ? concat([symbol, path.call(print, "body", 0)])
7
7
  : symbol;
@@ -7,7 +7,7 @@ module.exports = {
7
7
  const [contents, ending] = path.map(print, "body");
8
8
 
9
9
  const useBraces = contents.some(
10
- content => typeof content === "string" && content.includes("/")
10
+ (content) => typeof content === "string" && content.includes("/")
11
11
  );
12
12
  const parts = [useBraces ? "%r{" : "/"]
13
13
  .concat(contents)
@@ -9,6 +9,16 @@ const {
9
9
  } = require("../prettier");
10
10
  const { literal } = require("../utils");
11
11
 
12
+ // You can't skip the parentheses if you have the `and` or `or` operator,
13
+ // because they have low enough operator precedence that you need to explicitly
14
+ // keep them in there.
15
+ const canSkipParens = (args) => {
16
+ const statement = args.body[0].body[0].body[0];
17
+ return (
18
+ statement.type !== "binary" || !["and", "or"].includes(statement.body[1])
19
+ );
20
+ };
21
+
12
22
  const printReturn = (path, opts, print) => {
13
23
  let args = path.getValue().body[0].body[0];
14
24
  let steps = ["body", 0, "body", 0];
@@ -20,7 +30,7 @@ const printReturn = (path, opts, print) => {
20
30
  // If the body of the return contains parens, then just skip directly to the
21
31
  // content of the parens so that we can skip printing parens if we don't
22
32
  // want them.
23
- if (args.body[0] && args.body[0].type === "paren") {
33
+ if (args.body[0] && args.body[0].type === "paren" && canSkipParens(args)) {
24
34
  args = args.body[0].body[0];
25
35
  steps = steps.concat("body", 0, "body", 0);
26
36
  }
@@ -15,18 +15,18 @@ const { concatBody, empty, makeList, prefix, surround } = require("../utils");
15
15
  // quote the user chose. (If they chose single quotes, then double quoting
16
16
  // would activate the escape sequence, and if they chose double quotes, then
17
17
  // single quotes would deactivate it.)
18
- const isQuoteLocked = string =>
18
+ const isQuoteLocked = (string) =>
19
19
  string.body.some(
20
- part =>
20
+ (part) =>
21
21
  part.type === "@tstring_content" &&
22
22
  (part.body.includes("#{") || part.body.includes("\\"))
23
23
  );
24
24
 
25
25
  // A string is considered to be able to use single quotes if it contains only
26
26
  // plain string content and that content does not contain a single quote.
27
- const isSingleQuotable = string =>
27
+ const isSingleQuotable = (string) =>
28
28
  string.body.every(
29
- part => part.type === "@tstring_content" && !part.body.includes("'")
29
+ (part) => part.type === "@tstring_content" && !part.body.includes("'")
30
30
  );
31
31
 
32
32
  const quotePattern = new RegExp("\\\\([\\s\\S])|(['\"])", "g");
@@ -61,7 +61,7 @@ const quotePairs = {
61
61
  "<": ">"
62
62
  };
63
63
 
64
- const getClosingQuote = quote => {
64
+ const getClosingQuote = (quote) => {
65
65
  if (!quote.startsWith("%")) {
66
66
  return quote;
67
67
  }
@@ -3,7 +3,6 @@
3
3
  // directly, as it's been shipped with the gem.
4
4
  const source = process.env.RBPRETTIER ? "../node_modules/prettier" : "prettier";
5
5
 
6
- // eslint-disable-next-line import/no-dynamic-require
7
6
  const prettier = require(source);
8
7
 
9
8
  // Just combine all the things into one big object so that we can import
@@ -4,10 +4,10 @@ const print = require("./print");
4
4
  const haml = require("./haml");
5
5
 
6
6
  const pragmaPattern = /#\s*@(prettier|format)/;
7
- const hasPragma = text => pragmaPattern.test(text);
7
+ const hasPragma = (text) => pragmaPattern.test(text);
8
8
 
9
- const locStart = node => node.char_start;
10
- const locEnd = node => node.char_end;
9
+ const locStart = (node) => node.char_start;
10
+ const locEnd = (node) => node.char_end;
11
11
 
12
12
  /*
13
13
  * metadata mostly pulled from linguist and rubocop:
@@ -1,4 +1,4 @@
1
- const isCall = node => ["::", "."].includes(node) || node.type === "@period";
1
+ const isCall = (node) => ["::", "."].includes(node) || node.type === "@period";
2
2
 
3
3
  // If you have a simple block that only calls a method on the single required
4
4
  // parameter that is passed to it, then you can replace that block with the
@@ -11,7 +11,7 @@ const isCall = node => ["::", "."].includes(node) || node.type === "@period";
11
11
  // [1, 2, 3].map(&:to_s)
12
12
  //
13
13
  // This works with `do` blocks as well.
14
- const toProc = node => {
14
+ const toProc = (node) => {
15
15
  if (!node) {
16
16
  return null;
17
17
  }
@@ -10,11 +10,11 @@ const concatBody = (path, opts, print) => concat(path.map(print, "body"));
10
10
 
11
11
  // If the node is a type of assignment or if the node is a paren and nested
12
12
  // inside that paren is a node that is a type of assignment.
13
- const containsAssignment = node =>
13
+ const containsAssignment = (node) =>
14
14
  ["assign", "massign"].includes(node.type) ||
15
15
  (node.type === "paren" && node.body[0].body.some(containsAssignment));
16
16
 
17
- const docLength = doc => {
17
+ const docLength = (doc) => {
18
18
  if (doc.length) {
19
19
  return doc.length;
20
20
  }
@@ -50,7 +50,7 @@ const hasAncestor = (path, types) => {
50
50
  return false;
51
51
  };
52
52
 
53
- const literal = value => () => value;
53
+ const literal = (value) => () => value;
54
54
 
55
55
  const makeArgs = (path, opts, print, argsIndex) => {
56
56
  let argNodes = path.getValue().body[argsIndex];
@@ -103,13 +103,13 @@ const makeCall = (path, opts, print) => {
103
103
 
104
104
  const makeList = (path, opts, print) => path.map(print, "body");
105
105
 
106
- const prefix = value => (path, opts, print) =>
106
+ const prefix = (value) => (path, opts, print) =>
107
107
  concat([value, path.call(print, "body", 0)]);
108
108
 
109
109
  const printComments = (printed, start, comments) => {
110
110
  let node = printed;
111
111
 
112
- comments.forEach(comment => {
112
+ comments.forEach((comment) => {
113
113
  if (comment.start < start) {
114
114
  node = concat([
115
115
  comment.break ? breakParent : "",
@@ -129,7 +129,7 @@ const printComments = (printed, start, comments) => {
129
129
  return node;
130
130
  };
131
131
 
132
- const skipAssignIndent = node =>
132
+ const skipAssignIndent = (node) =>
133
133
  ["array", "hash", "heredoc", "lambda", "regexp_literal"].includes(
134
134
  node.type
135
135
  ) ||
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prettier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Deisz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2020-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler