Sha256: f7209eb78547082aab0eb00d09e022cf22d59794dc7ef0d31413396ed0292bab

Contents?: true

Size: 647 Bytes

Versions: 1

Compression:

Stored size: 647 Bytes

Contents

# encoding: utf-8

module Rubocop
  module Cop
    class TernaryOperator < Cop
      ERROR_MESSAGE = 'Avoid multi-line ?: (the ternary operator); use ' +
        'if/unless instead.'

      def inspect(file, source, tokens, sexp)
        each(:ifop, sexp) do |ifop|
          line_numbers = all_positions(ifop).map(&:lineno)
          if line_numbers.uniq.size > 1
            add_offence(:convention, line_numbers[0], ERROR_MESSAGE)
          end
        end
      end

      def all_positions(sexp)
        return [sexp[2]] if sexp[0] =~ /^@/
        sexp.grep(Array).inject([]) { |memo, s| memo + all_positions(s) }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubocop-0.2.1 lib/rubocop/cop/ternary_operator.rb