Class: TRuby::CodeEmitter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/t_ruby/code_emitter.rb

Overview

Base class for version-specific code emitters

Direct Known Subclasses

Ruby30, Ruby31

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version) ⇒ Base

Returns a new instance of Base.



33
34
35
# File 'lib/t_ruby/code_emitter.rb', line 33

def initialize(version)
  @version = version
end

Instance Attribute Details

#versionObject (readonly)

Returns the value of attribute version.



31
32
33
# File 'lib/t_ruby/code_emitter.rb', line 31

def version
  @version
end

Instance Method Details

#numbered_params_error?Boolean

Check if numbered parameters raise NameError in this version

Returns:



75
76
77
# File 'lib/t_ruby/code_emitter.rb', line 75

def numbered_params_error?
  false
end

#supports_it?Boolean

Check if this version supports the ‘it` implicit block parameter

Returns:



68
69
70
# File 'lib/t_ruby/code_emitter.rb', line 68

def supports_it?
  false
end

#transform(source) ⇒ String

Apply all transformations for this version

Parameters:

  • source code to transform

Returns:

  • transformed source code



41
42
43
44
45
# File 'lib/t_ruby/code_emitter.rb', line 41

def transform(source)
  result = source.dup
  result = transform_numbered_params(result)
  transform_block_forwarding(result)
end

#transform_block_forwarding(source) ⇒ String

Transform block forwarding syntax Default: no transformation

Parameters:

  • source code

Returns:

  • transformed source code



61
62
63
# File 'lib/t_ruby/code_emitter.rb', line 61

def transform_block_forwarding(source)
  source
end

#transform_numbered_params(source) ⇒ String

Transform numbered block parameters (_1, _2, etc.) Default: no transformation

Parameters:

  • source code

Returns:

  • transformed source code



52
53
54
# File 'lib/t_ruby/code_emitter.rb', line 52

def transform_numbered_params(source)
  source
end