# FIXME: Lower by refactoring biggest offenders
Metrics/AbcSize:
  Max: 24

# FIXME: Lower by shortening biggest offenders
Metrics/LineLength:
  Max: 109

# FIXME: Lower by refactoring biggest offenders
Metrics/MethodLength:
  Max: 18

# FIXME: Lower by refactoring biggest offenders
Metrics/PerceivedComplexity:
  Max: 8

# FIXME: Document these
Style/Documentation:
  Exclude:
    - benchmarks/basic.rb
    - lib/rom.rb
    - lib/rom/adapter/memory.rb
    - lib/rom/adapter/memory/commands.rb
    - lib/rom/adapter/memory/dataset.rb
    - lib/rom/adapter/memory/storage.rb
    - lib/rom/boot/base_relation_dsl.rb
    - lib/rom/boot/command_dsl.rb
    - lib/rom/boot/dsl.rb
    - lib/rom/boot/mapper_dsl.rb
    - lib/rom/boot/relation_dsl.rb
    - lib/rom/boot/schema_dsl.rb
    - lib/rom/command_registry.rb
    - lib/rom/commands.rb
    - lib/rom/header.rb
    - lib/rom/mapper.rb
    - lib/rom/mapper_builder.rb
    - lib/rom/model_builder.rb
    - lib/rom/ra/operation/group.rb
    - lib/rom/ra/operation/join.rb
    - lib/rom/ra/operation/wrap.rb
    - lib/rom/transformer.rb
    - lib/rom/version.rb
    - spec/support/mutant.rb
    - spec/unit/rom/adapter_spec.rb
    - spec/unit/rom/model_builder_spec.rb

# It’s quite readable when we know what we are doing
Lint/AssignmentInCondition:
  Enabled: false

# UTF-8 is perfectly fine in comments
Style/AsciiComments:
  Enabled: false

# Allow using braces for value-returning blocks
Style/Blocks:
  Enabled: false

# Early returns have their vices
Style/GuardClause:
  Enabled: false

# Need to be skipped for >-> usage
Style/Lambda:
  Enabled: false

# Multiline block chains are ok
Style/MultilineBlockChain:
  Enabled: false

# Result::Success and Result::Failure use > for callbacks
Style/OpMethod:
  Exclude:
    - lib/rom/command_registry.rb

# Even a single escaped slash can be confusing
Style/RegexpLiteral:
  MaxSlashes: 0

# Allow for one-line class definitions
Style/Semicolon:
  AllowAsExpressionSeparator: true

# Don’t introduce semantic fail/raise distinction
Style/SignalException:
  EnforcedStyle: only_raise

# Need to be skipped for >-> usage
Style/SpaceAroundOperators:
  Enabled: false

# Accept both single and double quotes
Style/StringLiterals:
  Enabled: false

# Allow def self.foo; @foo; end
Style/TrivialAccessors:
  Enabled: false

Configure RuboCop for acceptable and FIXME offences
Configure RuboCop for acceptable and FIXME offences
