Module: TRuby::CodeEmitter

Defined in:
lib/t_ruby/code_emitter.rb

Overview

Version-specific code transformation strategies

Examples:

emitter = CodeEmitter.for_version("4.0")
result = emitter.transform(source)

Defined Under Namespace

Classes: Base, Ruby30, Ruby31, Ruby34, Ruby40

Class Method Summary collapse

Class Method Details

.for_version(target_ruby) ⇒ Base

Factory method to get appropriate emitter for target Ruby version

Parameters:

  • target_ruby (String)

    target Ruby version (e.g., “3.0”, “4.0”)

Returns:

  • (Base)

    appropriate emitter instance



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/t_ruby/code_emitter.rb', line 15

def self.for_version(target_ruby)
  version = RubyVersion.parse(target_ruby)

  if version.numbered_parameters_raise_error?
    Ruby40.new(version)
  elsif version.supports_it_parameter?
    Ruby34.new(version)
  elsif version.supports_anonymous_block_forwarding?
    Ruby31.new(version)
  else
    Ruby30.new(version)
  end
end