class RuboCop::Cop::PreferredDelimiters

Common functionality for handling percent literal delimiters.

Constants

PERCENT_LITERAL_TYPES

Attributes

config[R]
type[R]

Public Class Methods

new(type, config, preferred_delimiters) click to toggle source
# File lib/rubocop/cop/mixin/preferred_delimiters.rb, line 11
def initialize(type, config, preferred_delimiters)
  @type = type
  @config = config
  @preferred_delimiters = preferred_delimiters
end

Public Instance Methods

delimiters() click to toggle source
# File lib/rubocop/cop/mixin/preferred_delimiters.rb, line 17
def delimiters
  preferred_delimiters[type].split(//)
end

Private Instance Methods

ensure_valid_preferred_delimiters() click to toggle source
# File lib/rubocop/cop/mixin/preferred_delimiters.rb, line 23
def ensure_valid_preferred_delimiters
  invalid = preferred_delimiters_config.keys -
            (PERCENT_LITERAL_TYPES + %w[default])
  return if invalid.empty?

  raise ArgumentError,
        "Invalid preferred delimiter config key: #{invalid.join(', ')}"
end
preferred_delimiters() click to toggle source
# File lib/rubocop/cop/mixin/preferred_delimiters.rb, line 32
def preferred_delimiters
  @preferred_delimiters ||=
    begin
      ensure_valid_preferred_delimiters

      if preferred_delimiters_config.key?('default')
        Hash[PERCENT_LITERAL_TYPES.map do |type|
          [type, preferred_delimiters_config[type] ||
            preferred_delimiters_config['default']]
        end]
      else
        preferred_delimiters_config
      end
    end
end
preferred_delimiters_config() click to toggle source
# File lib/rubocop/cop/mixin/preferred_delimiters.rb, line 48
def preferred_delimiters_config
  config.for_cop('Style/PercentLiteralDelimiters')['PreferredDelimiters']
end