Module: RuboCop::Cop::ViewComponent::Base
- Included in:
- ComponentSuffix, NoGlobalState, PreferComposition, PreferPrivateMethods, PreferSlots
- Defined in:
- lib/rubocop/cop/view_component/base.rb
Overview
Shared helper methods for ViewComponent cops
Instance Method Summary collapse
-
#enclosing_class(node) ⇒ Object
Find the enclosing class node.
-
#inside_view_component?(node) ⇒ Boolean
Check if node is within a ViewComponent class.
-
#view_component_class?(node) ⇒ Boolean
Check if a class node inherits from ViewComponent::Base or ApplicationComponent.
-
#view_component_parent?(node) ⇒ Boolean
Check if node represents ViewComponent::Base, ApplicationComponent, or a configured additional parent class.
Instance Method Details
#enclosing_class(node) ⇒ Object
Find the enclosing class node
31 32 33 |
# File 'lib/rubocop/cop/view_component/base.rb', line 31 def enclosing_class(node) node.each_ancestor(:class).first end |
#inside_view_component?(node) ⇒ Boolean
Check if node is within a ViewComponent class
36 37 38 39 40 41 |
# File 'lib/rubocop/cop/view_component/base.rb', line 36 def inside_view_component?(node) klass = enclosing_class(node) return false unless klass view_component_class?(klass) end |
#view_component_class?(node) ⇒ Boolean
Check if a class node inherits from ViewComponent::Base or ApplicationComponent
9 10 11 12 13 14 15 16 |
# File 'lib/rubocop/cop/view_component/base.rb', line 9 def view_component_class?(node) return false unless node&.class_type? parent_class = node.parent_class return false unless parent_class view_component_parent?(parent_class) end |
#view_component_parent?(node) ⇒ Boolean
Check if node represents ViewComponent::Base, ApplicationComponent, or a configured additional parent class
20 21 22 23 24 25 26 27 28 |
# File 'lib/rubocop/cop/view_component/base.rb', line 20 def view_component_parent?(node) return false unless node.const_type? source = node.source return true if source == "ViewComponent::Base" || source == "ApplicationComponent" additional = config.for_all_cops["ViewComponentParentClasses"] || [] additional.include?(source) end |