【问题标题】:Rubocop indentation configurationRubocop 缩进配置
【发布时间】:2018-08-17 09:44:54
【问题描述】:

我希望 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

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

【问题讨论】:

  • 没人想访问那些imgur链接,把所有的代码贴在这里。
  • 无法在此编辑器中正确格式化代码。也无法添加图片
  • 我现在已经添加了格式化代码。请检查我是如何做到这一点的(通过点击您问题下方的编辑),以便您下次可以自己做:)
  • @holgerjust 你是不是……输入了所有这些代码?你是一个比我更好的人。 :)
  • 今天是我的免费星期五 :) 下次我希望不必再这样做了

标签: ruby rubocop


【解决方案1】:

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

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

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented

Layout/MultilineAssignmentLayout:
  EnforcedStyle: same_line

Layout/EndAlignment:
  EnforcedStyleAlignWith: variable

【讨论】:

  • 我已经试过了,没有改变任何东西。 MultilineMethodCallIndentation 有点帮助。但这仅适用于第一个示例
  • (我最初在示例中使用了错误的选项,请参阅我当前的编辑。)
  • 这仍然无法正常工作。我用结果更新了我的答案
  • 好的,这适用于第一个示例。在第二个例子中,elsif 和 else 仍然是缩进的
  • 好的,我现在可以使用 Layout/EndAlignment: EnforcedStyleAlignWith: variable
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多