Rubocop压痕配置

时间:2018-08-17 09:44:54

标签: ruby rubocop

我希望rubocop总是只缩进一次。另外,elsif和end根本不应缩进。像这样:

@shop = api
        .shop('de')['storefronts']
        .find_all do |front|
          front['name'] == 'WeeklyStorefront' ||
            front['name'] == 'DailyStorefront'
        end
        .map { |front|  font['catalogEntries'] }
        .flatten
        .map { |item| item['devName'] }

应如下所示:

@shop = api
  .shop('de')['storefronts']
  .find_all do |front|
    front['name'] == 'WeeklyStorefront' ||
      front['name'] == 'DailyStorefront'
  end
  .map { |front|  font['catalogEntries'] }
  .flatten
  .map { |item| item['devName'] }

这:

mode = if key.include? '_p2'
         'Solo'
       elsif key.include? '_p10'
         'Duo'
       else
         'Squad'
       end

应如下所示:

mode = if key.include? '_p2'
  'Solo'
elsif key.include? '_p10'
  'Duo'
else
  'Squad'
end

我尝试了许多不同的配置选项,但我从未使其正常工作。

我尝试过:

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented
产生以下结果的

@shop = api
  .shop('de')['storefronts']
  .find_all do |front|
          front['name'] == 'WeeklyStorefront' ||
            front['name'] == 'DailyStorefront'
        end
  .map { |front| front['catalogEntries'] }
  .flatten
  .map { |item| item['devName'] }

mode = if key.include? '_p2'
             'Solo'
           elsif key.include? '_p10'
             'Duo'
           else
             'Squad'
end

哪个更好,但仍然不是我想要的。

1 个答案:

答案 0 :(得分:2)

在第一个示例中,您可以使用.rubocop.yml文件中的选项Layout/MultilineMethodCallIndentation来为多行表达式强制采用其他样式。

对于第二个示例,您可以配置Layout/MultilineAssignmentLayoutLayout/EndAlignment

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented

Layout/MultilineAssignmentLayout:
  EnforcedStyle: same_line

Layout/EndAlignment:
  EnforcedStyleAlignWith: variable