class RuboCop::Cop::Utils::FormatString

Parses {Kernel#sprintf} format strings.

def format_sequences

def format_sequences
  @format_sequences ||= parse
end

def initialize(string)

def initialize(string)
  @source = string
end

def max_digit_dollar_num

def max_digit_dollar_num
  format_sequences.map(&:max_digit_dollar_num).max
end

def mixed_formats?

def mixed_formats?
  formats = format_sequences.reject(&:percent?).map do |seq|
    if seq.name
      :named
    elsif seq.max_digit_dollar_num
      :numbered
    else
      :unnumbered
    end
  end
  formats.uniq.size > 1
end

def named_interpolation?

def named_interpolation?
  format_sequences.any?(&:name)
end

def parse

def parse
  matches = []
  @source.scan(SEQUENCE) { matches << FormatSequence.new(Regexp.last_match) }
  matches
end

def valid?

def valid?
  !mixed_formats?
end