Module: RuboCop::Cop::SurroundingSpace

Overview

Common functionality for checking surrounding space.

Instance Method Summary collapse

Instance Method Details

#index_of_first_token(node) ⇒ Object


18
19
20
21
# File 'lib/rubocop/cop/mixin/surrounding_space.rb', line 18

def index_of_first_token(node)
  b = node.loc.expression.begin
  token_table[[b.line, b.column]]
end

#index_of_last_token(node) ⇒ Object


23
24
25
26
27
28
29
# File 'lib/rubocop/cop/mixin/surrounding_space.rb', line 23

def index_of_last_token(node)
  e = node.loc.expression.end
  (0...e.column).to_a.reverse.find do |c|
    ix = token_table[[e.line, c]]
    return ix if ix
  end
end

#space_between?(t1, t2) ⇒ Boolean

Returns:

  • (Boolean)

7
8
9
10
11
12
13
14
15
16
# File 'lib/rubocop/cop/mixin/surrounding_space.rb', line 7

def space_between?(t1, t2)
  between = Parser::Source::Range.new(t1.pos.source_buffer,
                                      t1.pos.end_pos,
                                      t2.pos.begin_pos).source

  # Check if the range between the tokens starts with a space. It can
  # contain other characters, e.g. a unary plus, but it must start with
  # space.
  between =~ /^\s/
end

#token_tableObject


31
32
33
34
35
36
37
38
39
# File 'lib/rubocop/cop/mixin/surrounding_space.rb', line 31

def token_table
  @token_table ||= begin
    table = {}
    @processed_source.tokens.each_with_index do |t, ix|
      table[[t.pos.line, t.pos.column]] = ix
    end
    table
  end
end