Module: WhyClasses::Correctors::FunctionBucketCorrector
- Defined in:
- lib/why_classes/correctors/function_bucket_corrector.rb
Overview
Rewrites a single-function "service object" class into a module function:
class CreateUser => module CreateUser
def call module_function
...
end def call
end ...
end
end
Unsafe-tier: CreateUser.new.call call sites elsewhere would break.
Class Method Summary collapse
Class Method Details
.correctable?(shape) ⇒ Boolean
21 22 23 24 25 26 27 28 29 |
# File 'lib/why_classes/correctors/function_bucket_corrector.rb', line 21 def correctable?(shape) return false if shape.module? return false if shape.superclass? return false if shape. return false unless shape.initialize_method.nil? return false unless shape.singleton_methods.empty? shape.behavior_methods.size == 1 end |
.corrector(class_node, method_node) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/why_classes/correctors/function_bucket_corrector.rb', line 31 def corrector(class_node, method_node) lambda do |rewriter| rewriter.replace(class_node.location.keyword, "module") inner = " " * (class_node.location.keyword.column + 2) rewriter.insert_before(method_node.location.expression, "module_function\n\n#{inner}") end end |