Class: TRuby::TypeErasure

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

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ TypeErasure

Returns a new instance of TypeErasure.



5
6
7
# File 'lib/t_ruby/type_erasure.rb', line 5

def initialize(source)
  @source = source
end

Instance Method Details

#eraseObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/t_ruby/type_erasure.rb', line 9

def erase
  result = @source.dup

  # Remove type alias definitions: type AliasName = TypeDefinition
  result = result.gsub(/^\s*type\s+\w+\s*=\s*.+?$\n?/, '')

  # Remove parameter type annotations: (name: Type) -> (name)
  # Matches: parameter_name: TypeName
  result = result.gsub(/\b(\w+)\s*:\s*\w+/, '\1')

  # Remove return type annotations: ): TypeName -> )
  # Matches: ): TypeName or ): TypeName (with spaces/EOF)
  result = result.gsub(/\)\s*:\s*\w+(\s|$)/, ')\1')

  result
end