Class: Parser::StaticEnvironment

Inherits:
Object
  • Object
show all
Defined in:
lib/parser/static_environment.rb

Constant Summary collapse

FORWARD_ARGS =
:FORWARD_ARGS
ANONYMOUS_BLOCKARG =
:ANONYMOUS_BLOCKARG

Instance Method Summary collapse

Constructor Details

#initializeStaticEnvironment

Returns a new instance of StaticEnvironment.



9
10
11
# File 'lib/parser/static_environment.rb', line 9

def initialize
  reset
end

Instance Method Details

#declare(name) ⇒ Object



38
39
40
41
42
# File 'lib/parser/static_environment.rb', line 38

def declare(name)
  @variables.add(name.to_sym)

  self
end

#declare_anonymous_blockargObject



56
57
58
# File 'lib/parser/static_environment.rb', line 56

def declare_anonymous_blockarg
  declare(ANONYMOUS_BLOCKARG)
end

#declare_forward_argsObject



48
49
50
# File 'lib/parser/static_environment.rb', line 48

def declare_forward_args
  declare(FORWARD_ARGS)
end

#declared?(name) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/parser/static_environment.rb', line 44

def declared?(name)
  @variables.include?(name.to_sym)
end

#declared_anonymous_blockarg?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/parser/static_environment.rb', line 60

def declared_anonymous_blockarg?
  declared?(ANONYMOUS_BLOCKARG)
end

#declared_forward_args?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/parser/static_environment.rb', line 52

def declared_forward_args?
  declared?(FORWARD_ARGS)
end

#empty?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/parser/static_environment.rb', line 64

def empty?
  @stack.empty?
end

#extend_dynamicObject



25
26
27
28
29
30
# File 'lib/parser/static_environment.rb', line 25

def extend_dynamic
  @stack.push(@variables)
  @variables = @variables.dup

  self
end

#extend_staticObject



18
19
20
21
22
23
# File 'lib/parser/static_environment.rb', line 18

def extend_static
  @stack.push(@variables)
  @variables = Set[]

  self
end

#resetObject



13
14
15
16
# File 'lib/parser/static_environment.rb', line 13

def reset
  @variables = Set[]
  @stack     = []
end

#unextendObject



32
33
34
35
36
# File 'lib/parser/static_environment.rb', line 32

def unextend
  @variables = @stack.pop

  self
end