Class: TRuby::TypeErasure
- Inherits:
-
Object
- Object
- TRuby::TypeErasure
- Defined in:
- lib/t_ruby/type_erasure.rb
Instance Method Summary collapse
- #erase ⇒ Object
-
#initialize(source) ⇒ TypeErasure
constructor
A new instance of TypeErasure.
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
#erase ⇒ Object
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 |