Class: RubyTransform::Transformers::ClearExplicitReturns
- Inherits:
-
RubyTransform::Transformer
- Object
- RubyTransform::Transformer
- RubyTransform::Transformers::ClearExplicitReturns
- Defined in:
- lib/ruby_transform/transformers/clear_explicit_returns.rb
Overview
Clear Explicit Returns
Looks for cases where the last expression in a method contains an explicit “return” statement, which is unnecessary in ruby, and removes it.
Example:
def my_method
a = 1
call_something(a)
return a
end
Transforms To:
def my_method
a = 1
call_something(a)
a
end
Instance Method Summary collapse
- #matches_explicit_return_method?(e) ⇒ Boolean
- #transform(e) ⇒ Object
- #transform_explicit_return_method(e) ⇒ Object
- #transform_explicit_returns(e) ⇒ Object
Methods included from RubyTransform::TransformerHelpers
Instance Method Details
#matches_explicit_return_method?(e) ⇒ Boolean
37 38 39 |
# File 'lib/ruby_transform/transformers/clear_explicit_returns.rb', line 37 def matches_explicit_return_method?(e) e.is_a?(Sexp) && e.method? && e.block && e.block.body.last && e.block.body.last.kind == :return end |
#transform(e) ⇒ Object
25 26 27 |
# File 'lib/ruby_transform/transformers/clear_explicit_returns.rb', line 25 def transform(e) super(transform_explicit_returns(e)) end |
#transform_explicit_return_method(e) ⇒ Object
41 42 43 44 45 |
# File 'lib/ruby_transform/transformers/clear_explicit_returns.rb', line 41 def transform_explicit_return_method(e) e.clone.tap do |exp| exp.block[-1] = exp.block[-1].body[0] end end |
#transform_explicit_returns(e) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/ruby_transform/transformers/clear_explicit_returns.rb', line 29 def transform_explicit_returns(e) if matches_explicit_return_method?(e) transform_explicit_return_method(e) else e end end |