# http://shopify.github.io/ruby-style-guide/rubocop.yml
#
Layout/AccessModifierIndentation:
  EnforcedStyle: indent
  SupportedStyles:
  - outdent
  - indent
  IndentationWidth: 2

Style/Alias:
  EnforcedStyle: prefer_alias_method
  SupportedStyles:
  - prefer_alias
  - prefer_alias_method

Layout/HashAlignment:
  EnforcedHashRocketStyle: key
  EnforcedColonStyle: key
  EnforcedLastArgumentHashStyle: ignore_implicit
  SupportedLastArgumentHashStyles:
  - always_inspect
  - always_ignore
  - ignore_implicit
  - ignore_explicit

Layout/ParameterAlignment:
  EnforcedStyle: with_fixed_indentation
  SupportedStyles:
  - with_first_parameter
  - with_fixed_indentation
  IndentationWidth: 2

Style/AndOr:
  EnforcedStyle: always
  SupportedStyles:
  - always
  - conditionals

Style/BarePercentLiterals:
  EnforcedStyle: bare_percent
  SupportedStyles:
  - percent_q
  - bare_percent

Style/BlockDelimiters:
  EnforcedStyle: line_count_based
  SupportedStyles:
  - line_count_based
  - semantic
  - braces_for_chaining
  ProceduralMethods:
  - benchmark
  - bm
  - bmbm
  - create
  - each_with_object
  - measure
  - new
  - realtime
  - tap
  - with_object
  FunctionalMethods:
  - let
  - let!
  - subject
  - watch
  AllowedMethods:
  - lambda
  - proc
  - it



Layout/CaseIndentation:
  EnforcedStyle: end
  SupportedStyles:
  - case
  - end
  IndentOneStep: false
  IndentationWidth: 2

Style/ClassAndModuleChildren:
  EnforcedStyle: nested
  SupportedStyles:
  - nested
  - compact

Style/ClassCheck:
  EnforcedStyle: is_a?
  SupportedStyles:
  - is_a?
  - kind_of?

Style/CommandLiteral:
  EnforcedStyle: backticks
  SupportedStyles:
  - backticks
  - percent_x
  - mixed
  AllowInnerBackticks: false

Style/ConditionalAssignment:
  EnforcedStyle: assign_to_condition
  SupportedStyles:
  - assign_to_condition
  - assign_inside_condition
  SingleLineConditionsOnly: true

Layout/DotPosition:
  EnforcedStyle: leading
  SupportedStyles:
  - leading
  - trailing

Style/EmptyElse:
  EnforcedStyle: both
  SupportedStyles:
  - empty
  - nil
  - both

Layout/EmptyLineBetweenDefs:
  AllowAdjacentOneLineDefs: false

Layout/EmptyLinesAroundBlockBody:
  EnforcedStyle: no_empty_lines
  SupportedStyles:
  - empty_lines
  - no_empty_lines

Layout/EmptyLinesAroundClassBody:
  EnforcedStyle: no_empty_lines
  SupportedStyles:
  - empty_lines
  - empty_lines_except_namespace
  - no_empty_lines

Layout/EmptyLinesAroundModuleBody:
  EnforcedStyle: no_empty_lines
  SupportedStyles:
  - empty_lines
  - empty_lines_except_namespace
  - no_empty_lines

Layout/ExtraSpacing:
  AllowForAlignment: true
  ForceEqualSignAlignment: false

Naming/FileName:
  Exclude: []
  ExpectMatchingDefinition: false
  Regex:
  IgnoreExecutableScripts: true

Layout/AssignmentIndentation:
  IndentationWidth: 2

Style/For:
  EnforcedStyle: each
  SupportedStyles:
  - for
  - each

Style/FormatString:
  EnforcedStyle: format
  SupportedStyles:
  - format
  - sprintf
  - percent

Style/HashSyntax:
  EnforcedStyle: ruby19
  SupportedStyles:
  - ruby19
  - hash_rockets
  - no_mixed_keys
  - ruby19_no_mixed_keys
  UseHashRocketsWithSymbolValues: false
  PreferHashRocketsForNonAlnumEndingSymbols: false

Layout/IndentationConsistency:
  EnforcedStyle: normal
  SupportedStyles:
  - normal
  - rails

Layout/IndentationWidth:
  Width: 2

Layout/FirstArrayElementIndentation:
  EnforcedStyle: consistent
  SupportedStyles:
  - special_inside_parentheses
  - consistent
  - align_brackets
  - align_parentheses

Layout/FirstHashElementIndentation:
  EnforcedStyle: consistent
  SupportedStyles:
  - special_inside_parentheses
  - consistent
  - align_braces
  - align_brackets
  - align_parentheses

Style/LambdaCall:
  EnforcedStyle: call
  SupportedStyles:
  - call
  - braces

Style/Next:
  EnforcedStyle: skip_modifier_ifs
  MinBodyLength: 3
  SupportedStyles:
  - skip_modifier_ifs
  - always

Style/NonNilCheck:
  IncludeSemanticChanges: false

Style/MethodDefParentheses:
  EnforcedStyle: require_parentheses
  SupportedStyles:
  - require_parentheses
  - require_no_parentheses
  - require_no_parentheses_except_multiline

Naming/MethodName:
  EnforcedStyle: snake_case
  SupportedStyles:
  - snake_case
  - camelCase

Layout/MultilineArrayBraceLayout:
  EnforcedStyle: symmetrical
  SupportedStyles:
  - symmetrical
  - new_line
  - same_line

Layout/MultilineHashBraceLayout:
  EnforcedStyle: symmetrical
  SupportedStyles:
  - symmetrical
  - new_line
  - same_line

Layout/MultilineMethodCallBraceLayout:
  EnforcedStyle: symmetrical
  SupportedStyles:
  - symmetrical
  - new_line
  - same_line

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented
  SupportedStyles:
  - aligned
  - indented
  - indented_relative_to_receiver
  IndentationWidth: 2

Layout/MultilineMethodDefinitionBraceLayout:
  EnforcedStyle: symmetrical
  SupportedStyles:
  - symmetrical
  - new_line
  - same_line

Style/NumericLiteralPrefix:
  EnforcedOctalStyle: zero_only
  SupportedOctalStyles:
  - zero_with_o
  - zero_only

Style/ParenthesesAroundCondition:
  AllowSafeAssignment: true

Style/PercentLiteralDelimiters:
  PreferredDelimiters:
    '%': '()'
    '%i': '()'
    '%q': '()'
    '%Q': '()'
    '%r': '{}'
    '%s': '()'
    '%w': '()'
    '%W': '()'
    '%x': '()'

Style/PercentQLiterals:
  EnforcedStyle: lower_case_q
  SupportedStyles:
  - lower_case_q
  - upper_case_q

Naming/PredicateName:
  NamePrefix:
  - is_
  ForbiddenPrefixes:
  - is_
  AllowedMethods:
  - is_a?
  Exclude:
  - 'spec/**/*'

Style/PreferredHashMethods:
  EnforcedStyle: short
  SupportedStyles:
  - short
  - verbose

Style/RaiseArgs:
  EnforcedStyle: exploded
  SupportedStyles:
  - compact
  - exploded

Style/RedundantReturn:
  AllowMultipleReturnValues: false

Style/RegexpLiteral:
  EnforcedStyle: slashes
  SupportedStyles:
  - slashes
  - percent_r
  - mixed
  AllowInnerSlashes: false

Style/SafeNavigation:
  ConvertCodeThatCanStartToReturnNil: false
  Enabled: true

Lint/SafeNavigationChain:
  Enabled: true

Style/Semicolon:
  AllowAsExpressionSeparator: false

Style/SignalException:
  EnforcedStyle: only_raise
  SupportedStyles:
  - only_raise
  - only_fail
  - semantic

Style/SingleLineMethods:
  AllowIfMethodIsEmpty: true

Layout/SpaceBeforeFirstArg:
  AllowForAlignment: true

Style/SpecialGlobalVars:
  EnforcedStyle: use_english_names
  SupportedStyles:
  - use_perl_names
  - use_english_names

Style/StabbyLambdaParentheses:
  EnforcedStyle: require_parentheses
  SupportedStyles:
  - require_parentheses
  - require_no_parentheses

Style/StringLiteralsInInterpolation:
  EnforcedStyle: single_quotes
  SupportedStyles:
  - single_quotes
  - double_quotes

Layout/SpaceAroundBlockParameters:
  EnforcedStyleInsidePipes: no_space
  SupportedStylesInsidePipes:
  - space
  - no_space

Layout/SpaceAroundEqualsInParameterDefault:
  EnforcedStyle: space
  SupportedStyles:
  - space
  - no_space

Layout/SpaceAroundOperators:
  AllowForAlignment: true

Layout/SpaceBeforeBlockBraces:
  EnforcedStyle: space
  EnforcedStyleForEmptyBraces: space
  SupportedStyles:
  - space
  - no_space

Layout/SpaceInsideBlockBraces:
  EnforcedStyle: space
  SupportedStyles:
  - space
  - no_space
  EnforcedStyleForEmptyBraces: no_space
  SpaceBeforeBlockParameters: true

Layout/SpaceInsideHashLiteralBraces:
  EnforcedStyle: space
  EnforcedStyleForEmptyBraces: no_space
  SupportedStyles:
  - space
  - no_space
  - compact

Layout/SpaceInsideStringInterpolation:
  EnforcedStyle: no_space
  SupportedStyles:
  - space
  - no_space

Style/SymbolProc:
  AllowedMethods:
  - respond_to
  - define_method

Style/TernaryParentheses:
  EnforcedStyle: require_no_parentheses
  SupportedStyles:
  - require_parentheses
  - require_no_parentheses
  AllowSafeAssignment: true

Layout/TrailingEmptyLines:
  EnforcedStyle: final_newline
  SupportedStyles:
  - final_newline
  - final_blank_line

Style/TrivialAccessors:
  ExactNameMatch: true
  AllowPredicates: true
  AllowDSLWriters: false
  IgnoreClassMethods: false
  AllowedMethods:
  - to_ary
  - to_a
  - to_c
  - to_enum
  - to_h
  - to_hash
  - to_i
  - to_int
  - to_io
  - to_open
  - to_path
  - to_proc
  - to_r
  - to_regexp
  - to_str
  - to_s
  - to_sym

Naming/VariableName:
  EnforcedStyle: snake_case
  SupportedStyles:
  - snake_case
  - camelCase

Style/WhileUntilModifier:
  Enabled: true

Style/WordArray:
  EnforcedStyle: percent
  SupportedStyles:
  - percent
  - brackets
  MinSize: 0
  WordRegex: !ruby/regexp /\A[\p{Word}\n\t]+\z/

Layout/BlockAlignment:
  EnforcedStyleAlignWith: either
  SupportedStylesAlignWith:
  - either
  - start_of_block
  - start_of_line

Layout/DefEndAlignment:
  EnforcedStyleAlignWith: start_of_line
  SupportedStylesAlignWith:
  - start_of_line
  - def

Lint/InheritException:
  EnforcedStyle: runtime_error
  SupportedStyles:
  - runtime_error
  - standard_error

Lint/UnusedBlockArgument:
  IgnoreEmptyBlocks: true
  AllowUnusedKeywordArguments: false

Lint/UnusedMethodArgument:
  AllowUnusedKeywordArguments: false
  IgnoreEmptyMethods: true





Naming/AccessorMethodName:
  Enabled: true

Layout/ArrayAlignment:
  Enabled: true

Style/ArrayJoin:
  Enabled: true

Naming/AsciiIdentifiers:
  Enabled: true

Style/Attr:
  Enabled: true

Style/BeginBlock:
  Enabled: true

Style/BlockComments:
  Enabled: true

Layout/BlockEndNewline:
  Enabled: true

Style/CaseEquality:
  Enabled: true

Style/CharacterLiteral:
  Enabled: true

Naming/ClassAndModuleCamelCase:
  Enabled: true

Style/ClassMethods:
  Enabled: true

Style/ClassVars:
  Enabled: true

Layout/ClosingParenthesisIndentation:
  Enabled: true

Style/ColonMethodCall:
  Enabled: true

Layout/CommentIndentation:
  Enabled: true

Naming/ConstantName:
  Enabled: true

Style/DefWithParentheses:
  Enabled: true

Style/EachForSimpleLoop:
  Enabled: true

Style/EachWithObject:
  Enabled: true

Layout/ElseAlignment:
  Enabled: true

Style/EmptyCaseCondition:
  Enabled: true

Layout/EmptyLines:
  Enabled: true

Layout/EmptyLinesAroundAccessModifier:
  Enabled: true

Layout/EmptyLinesAroundMethodBody:
  Enabled: true

Style/EmptyLiteral:
  Enabled: true

Layout/EndOfLine:
  Enabled: true

Style/EvenOdd:
  Enabled: true

Layout/InitialIndentation:
  Enabled: true

Lint/FlipFlop:
  Enabled: true

Style/IfInsideElse:
  Enabled: true

Style/IfUnlessModifierOfIfUnless:
  Enabled: true

Style/IfWithSemicolon:
  Enabled: true

Style/IdenticalConditionalBranches:
  Enabled: true

Style/InfiniteLoop:
  Enabled: true

Layout/LeadingCommentSpace:
  Enabled: true

Style/LineEndConcatenation:
  Enabled: true

Style/MethodCallWithoutArgsParentheses:
  Enabled: true

Style/MultilineBlockChain:
  Enabled: true

Layout/MultilineBlockLayout:
  Enabled: true

Style/MultilineIfThen:
  Enabled: true

Style/MultilineMemoization:
  Enabled: true

Style/MultilineTernaryOperator:
  Enabled: true

Style/NegatedIf:
  Enabled: true

Style/NegatedWhile:
  Enabled: true

Style/NestedModifier:
  Enabled: true

Style/NestedParenthesizedCalls:
  Enabled: true

Style/NestedTernaryOperator:
  Enabled: true

Style/NilComparison:
  Enabled: true

Style/Not:
  Enabled: true

Style/OneLineConditional:
  Enabled: true

Naming/BinaryOperatorParameterName:
  Enabled: true

Style/OptionalArguments:
  Enabled: true

Style/ParallelAssignment:
  Enabled: true

Style/PerlBackrefs:
  Enabled: true

Style/Proc:
  Enabled: true

Style/RedundantBegin:
  Enabled: true

Style/RedundantException:
  Enabled: true

Style/RedundantFreeze:
  Enabled: true

Style/RedundantParentheses:
  Enabled: true

Style/RedundantSelf:
  Enabled: true

Layout/RescueEnsureAlignment:
  Enabled: true

Style/RescueModifier:
  Enabled: true

Style/SelfAssignment:
  Enabled: true

Layout/SpaceAfterColon:
  Enabled: true

Layout/SpaceAfterComma:
  Enabled: true

Layout/SpaceAfterMethodName:
  Enabled: true

Layout/SpaceAfterNot:
  Enabled: true

Layout/SpaceAfterSemicolon:
  Enabled: true

Layout/SpaceBeforeComma:
  Enabled: true

Layout/SpaceBeforeComment:
  Enabled: true

Layout/SpaceBeforeSemicolon:
  Enabled: true

Layout/SpaceAroundKeyword:
  Enabled: true

Layout/SpaceInsideArrayPercentLiteral:
  Enabled: true

Layout/SpaceInsidePercentLiteralDelimiters:
  Enabled: true

Layout/SpaceInsideArrayLiteralBrackets:
  Enabled: true

Layout/SpaceInsideParens:
  Enabled: true

Layout/SpaceInsideRangeLiteral:
  Enabled: true

Style/SymbolLiteral:
  Enabled: true

Layout/IndentationStyle:
  Enabled: true

Layout/TrailingWhitespace:
  Enabled: true

Style/UnlessElse:
  Enabled: true

Style/RedundantCapitalW:
  Enabled: true

Style/RedundantInterpolation:
  Enabled: true

Style/RedundantPercentQ:
  Enabled: true

Style/VariableInterpolation:
  Enabled: true

Style/WhenThen:
  Enabled: true

Style/WhileUntilDo:
  Enabled: true

Style/ZeroLengthPredicate:
  Enabled: true


Lint/AmbiguousOperator:
  Enabled: true

Lint/AmbiguousRegexpLiteral:
  Enabled: true

Lint/CircularArgumentReference:
  Enabled: true

Layout/ConditionPosition:
  Enabled: true

Lint/Debugger:
  Enabled: true

Lint/DeprecatedClassMethods:
  Enabled: true

Lint/DuplicateMethods:
  Enabled: true

Lint/DuplicateHashKey:
  Enabled: true

Lint/EachWithObjectArgument:
  Enabled: true

Lint/ElseLayout:
  Enabled: true

Lint/EmptyEnsure:
  Enabled: true

Lint/EmptyInterpolation:
  Enabled: true

Style/EndBlock:
  Enabled: true

Lint/EnsureReturn:
  Enabled: true

Lint/FloatOutOfRange:
  Enabled: true

Lint/FormatParameterMismatch:
  Enabled: true

Lint/SuppressedException:
  Enabled: true

Lint/ImplicitStringConcatenation:
  Description: Checks for adjacent string literals on the same line, which could
    better be represented as a single string literal.

Lint/IneffectiveAccessModifier:
  Description: Checks for attempts to use `private` or `protected` to set the visibility
    of a class method, which does not work.

Lint/LiteralAsCondition:
  Enabled: true

Lint/LiteralInInterpolation:
  Enabled: true

Lint/Loop:
  Description: Use Kernel#loop with break rather than begin/end/until or begin/end/while
    for post-loop tests.

Lint/NestedMethodDefinition:
  Enabled: true

Lint/NextWithoutAccumulator:
  Description: Do not omit the accumulator when calling `next` in a `reduce`/`inject`
    block.

Lint/NonLocalExitFromIterator:
  Enabled: true

Lint/ParenthesesAsGroupedExpression:
  Enabled: true

Lint/PercentStringArray:
  Enabled: true

Lint/PercentSymbolArray:
  Enabled: true

Lint/RandOne:
  Description: Checks for `rand(1)` calls. Such calls always return `0` and most
    likely a mistake.

Lint/RequireParentheses:
  Enabled: true

Lint/RescueException:
  Enabled: true

Lint/ShadowedException:
  Enabled: true

Lint/ShadowingOuterLocalVariable:
  Enabled: true

Lint/RedundantStringCoercion:
  Enabled: true

Lint/UnderscorePrefixedVariableName:
  Enabled: true

Lint/UnifiedInteger:
  Enabled: true

Lint/RedundantSplatExpansion:
  Enabled: true

Lint/UnreachableCode:
  Enabled: true

Lint/UselessAccessModifier:
  ContextCreatingMethods: []

Lint/BinaryOperatorWithIdenticalOperands:
  Enabled: true

Lint/UselessElseWithoutRescue:
  Enabled: true

Lint/UselessSetterCall:
  Enabled: true

Lint/Void:
  Enabled: true


Style/RedundantSortBy:
  Enabled: true



Style/Sample:
  Enabled: true

Security/Eval:
  Enabled: true

Security/JSONLoad:
  Enabled: true

Style/ModuleFunction:
  EnforcedStyle: extend_self
