Module: Kefka::LocalsHelper

Defined in:
lib/kefka.rb

Class Method Summary collapse

Class Method Details

.get_locals(target, line_source) ⇒ Object



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/kefka.rb', line 172

def self.get_locals(target, line_source)
  scope_locals = target.eval("local_variables")
  scope_locals.map! { |local| local.to_s }

  tokens = Ripper.lex(line_source)

  lvar, ivar, cvar = [], [], []

  tokens.each { |token|
    type = token[1]

    case type
    when :on_ident; lvar << token[2] if scope_locals.include? token[2]
    when :on_ivar;  ivar << token[2]
    when :on_cvar;  cvar << token[2]
    else # do nothing
    end
  }

  [lvar,ivar,cvar].flatten
end