Class: RubyParser::Legacy::RubyParserStuff::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_parser/legacy/ruby_parser_extras.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dyn = false) ⇒ Environment

Returns a new instance of Environment.



1305
1306
1307
1308
1309
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1305

def initialize dyn = false
  @dyn = []
  @env = []
  self.reset
end

Instance Attribute Details

#dynObject (readonly)

Returns the value of attribute dyn.



1280
1281
1282
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1280

def dyn
  @dyn
end

#envObject (readonly)

Returns the value of attribute env.



1280
1281
1282
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1280

def env
  @env
end

Instance Method Details

#[](k) ⇒ Object



1282
1283
1284
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1282

def [] k
  self.all[k]
end

#[]=(k, v) ⇒ Object



1286
1287
1288
1289
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1286

def []= k, v
  raise "no" if v == true
  self.current[k] = v
end

#allObject



1291
1292
1293
1294
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1291

def all
  idx = @dyn.index(false) || 0
  @env[0..idx].reverse.inject { |env, scope| env.merge scope }
end

#currentObject



1296
1297
1298
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1296

def current
  @env.first
end

#extend(dyn = false) ⇒ Object



1300
1301
1302
1303
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1300

def extend dyn = false
  @dyn.unshift dyn
  @env.unshift({})
end

#resetObject



1311
1312
1313
1314
1315
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1311

def reset
  @dyn.clear
  @env.clear
  self.extend
end

#unextendObject



1317
1318
1319
1320
1321
# File 'lib/ruby_parser/legacy/ruby_parser_extras.rb', line 1317

def unextend
  @dyn.shift
  @env.shift
  raise "You went too far unextending env" if @env.empty?
end