Method: Textbringer::RubyMode#forward_definition

Defined in:
lib/textbringer/modes/ruby_mode.rb

#forward_definition(n = number_prefix_arg || 1) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/textbringer/modes/ruby_mode.rb', line 98

def forward_definition(n = number_prefix_arg || 1)
  tokens = Ripper.lex(@buffer.to_s)
  @buffer.forward_line
  n.times do |i|
    tokens = tokens.drop_while { |(l, _), e, t|
      l < @buffer.current_line ||
        e != :on_kw || /\A(?:class|module|def)\z/ !~ t
    }
    (line,), = tokens.first
    if line.nil?
      @buffer.end_of_buffer
      break
    end
    @buffer.goto_line(line)
    tokens = tokens.drop(1)
  end
  while /\s/ =~ @buffer.char_after
    @buffer.forward_char
  end
end