Module: RuboCop::Cop::ConfigurableEnforcedStyle
- Included in:
- Bundler::GemFilename, Bundler::GemVersion, ConfigurableFormatting, EndKeywordAlignment, Gemspec::DependencyVersion, Gemspec::DevelopmentDependencies, Layout::AccessModifierIndentation, Layout::BlockAlignment, Layout::CaseIndentation, Layout::DotPosition, Layout::EmptyLinesAroundAccessModifier, Layout::EmptyLinesAroundBody, Layout::EndOfLine, Layout::FirstArgumentIndentation, Layout::FirstArrayElementIndentation, Layout::FirstHashElementIndentation, Layout::FirstParameterIndentation, Layout::IndentationConsistency, Layout::IndentationStyle, Layout::LineEndStringConcatenationIndentation, Layout::MultilineAssignmentLayout, Layout::MultilineMethodCallIndentation, Layout::MultilineOperationIndentation, Layout::SpaceAroundBlockParameters, Layout::SpaceAroundEqualsInParameterDefault, Layout::SpaceBeforeBlockBraces, Layout::SpaceInLambdaLiteral, Layout::SpaceInsideArrayLiteralBrackets, Layout::SpaceInsideBlockBraces, Layout::SpaceInsideHashLiteralBraces, Layout::SpaceInsideParens, Layout::SpaceInsideReferenceBrackets, Layout::SpaceInsideStringInterpolation, Layout::TrailingEmptyLines, Lint::InheritException, Lint::SymbolConversion, MultilineLiteralBraceLayout, Naming::BlockForwarding, Naming::HeredocDelimiterCase, Naming::MemoizedInstanceVariableName, Style::AccessModifierDeclarations, Style::AccessorGrouping, Style::Alias, Style::AndOr, Style::BarePercentLiterals, Style::BlockDelimiters, Style::ClassAndModuleChildren, Style::ClassCheck, Style::ClassMethodsDefinitions, Style::CommandLiteral, Style::ConditionalAssignment, Style::DoubleNegation, Style::EmptyElse, Style::EmptyMethod, Style::EndlessMethod, Style::ExponentialNotation, Style::FloatDivision, Style::For, Style::FormatString, Style::FormatStringToken, Style::FrozenStringLiteralComment, Style::HashAsLastArrayItem, Style::HashSyntax, Style::Lambda, Style::LambdaCall, Style::MagicCommentFormat, Style::MethodCallWithArgsParentheses, Style::MethodDefParentheses, Style::MissingElse, Style::MixinGrouping, Style::ModuleFunction, Style::MultilineMemoization, Style::MutableConstant, Style::NegatedIf, Style::NegatedUnless, Style::Next, Style::NilComparison, Style::NumberedParameters, Style::NumericPredicate, Style::ObjectThen, Style::OneLineConditional, Style::PercentQLiterals, Style::PreferredHashMethods, Style::QuotedSymbols, Style::RaiseArgs, Style::RegexpLiteral, Style::RescueStandardError, Style::ReturnNil, Style::SignalException, Style::SpecialGlobalVars, Style::StabbyLambdaParentheses, Style::StringLiterals, Style::StringLiteralsInInterpolation, Style::SymbolArray, Style::TernaryParentheses, Style::UnlessLogicalOperators, Style::WordArray, Style::YodaCondition, TrailingComma
- Defined in:
- lib/rubocop/cop/mixin/configurable_enforced_style.rb
Overview
Handles ‘EnforcedStyle` configuration parameters.
Instance Method Summary collapse
- #alternative_style ⇒ Object
- #alternative_styles ⇒ Object
- #ambiguous_style_detected(*possibilities) ⇒ Object
- #correct_style_detected ⇒ Object
- #detected_style ⇒ Object
- #detected_style=(style) ⇒ Object
- #no_acceptable_style! ⇒ Object (also: #conflicting_styles_detected, #unrecognized_style_detected)
-
#no_acceptable_style? ⇒ Boolean
rubocop:enable Metrics.
- #opposite_style_detected ⇒ Object
- #style ⇒ Object
- #style_configured? ⇒ Boolean
-
#style_detected(detected) ⇒ Object
rubocop:disable Metrics.
- #style_parameter_name ⇒ Object
- #supported_styles ⇒ Object
- #unexpected_style_detected(unexpected) ⇒ Object
Instance Method Details
#alternative_style ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 88 def alternative_style if supported_styles.size != 2 raise 'alternative_style can only be used when there are exactly 2 SupportedStyles' end alternative_styles.first end |
#alternative_styles ⇒ Object
96 97 98 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 96 def alternative_styles (supported_styles - [style]) end |
#ambiguous_style_detected(*possibilities) ⇒ Object
19 20 21 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 19 def ambiguous_style_detected(*possibilities) style_detected(possibilities) end |
#correct_style_detected ⇒ Object
11 12 13 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 11 def correct_style_detected style_detected(style) end |
#detected_style ⇒ Object
64 65 66 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 64 def detected_style Formatter::DisabledConfigFormatter.detected_styles[cop_name] ||= nil end |
#detected_style=(style) ⇒ Object
68 69 70 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 68 def detected_style=(style) Formatter::DisabledConfigFormatter.detected_styles[cop_name] = style end |
#no_acceptable_style! ⇒ Object Also known as: conflicting_styles_detected, unrecognized_style_detected
60 61 62 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 60 def no_acceptable_style! self.config_to_allow_offenses = { 'Enabled' => false } end |
#no_acceptable_style? ⇒ Boolean
rubocop:enable Metrics
56 57 58 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 56 def no_acceptable_style? config_to_allow_offenses['Enabled'] == false end |
#opposite_style_detected ⇒ Object
7 8 9 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 7 def opposite_style_detected style_detected(alternative_style) end |
#style ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 79 def style @style ||= begin s = cop_config[style_parameter_name].to_sym raise "Unknown style #{s} selected!" unless supported_styles.include?(s) s end end |
#style_configured? ⇒ Boolean
75 76 77 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 75 def style_configured? cop_config.key?(style_parameter_name) end |
#style_detected(detected) ⇒ Object
rubocop:disable Metrics
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 29 def style_detected(detected) return if no_acceptable_style? # This logic is more complex than it needs to be # to avoid allocating Arrays in the hot code path. updated_list = if detected_style if detected_style.size == 1 && detected_style.include?(SYMBOL_TO_STRING_CACHE[detected]) detected_style else detected_as_strings = SYMBOL_TO_STRING_CACHE.values_at(*detected) detected_style & detected_as_strings end else # We haven't observed any specific style yet. SYMBOL_TO_STRING_CACHE.values_at(*detected) end if updated_list.empty? no_acceptable_style! else self.detected_style = updated_list config_to_allow_offenses[style_parameter_name] = updated_list.first end end |
#style_parameter_name ⇒ Object
107 108 109 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 107 def style_parameter_name 'EnforcedStyle' end |
#supported_styles ⇒ Object
100 101 102 103 104 105 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 100 def supported_styles @supported_styles ||= begin supported_styles = Util.to_supported_styles(style_parameter_name) cop_config[supported_styles].map(&:to_sym) end end |
#unexpected_style_detected(unexpected) ⇒ Object
15 16 17 |
# File 'lib/rubocop/cop/mixin/configurable_enforced_style.rb', line 15 def unexpected_style_detected(unexpected) style_detected(unexpected) end |