Class: RuboCop::Cop::Legion::HelperMigration::DirectKnowledge

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/legion/helper_migration/direct_knowledge.rb

Overview

Detects direct calls to ‘Legion::Apollo` and `Legion::Apollo::Local` methods and suggests using the `query_knowledge` / `ingest_knowledge` helpers instead.

Examples:

# bad
Legion::Apollo.query(text: 'search')
Legion::Apollo.ingest(content, tags: [:foo])
Legion::Apollo::Local.query(text: 'search')
Legion::Apollo::Local.ingest(content)

# good
query_knowledge(text: 'search')
ingest_knowledge(content, tags: [:foo])
query_knowledge(text: 'search', scope: :local)
ingest_knowledge(content, scope: :local)

Constant Summary collapse

MSG =
'Use `%<helper>s` instead of `%<receiver>s.%<method>s`. ' \
'Include the knowledge helper mixin.'
RESTRICT_ON_SEND =
%i[query ingest].freeze
GLOBAL_MAP =
{
  query: 'query_knowledge',
  ingest: 'ingest_knowledge'
}.freeze

Instance Method Summary collapse

Instance Method Details

#apollo_global_call?(node) ⇒ Object



37
38
39
# File 'lib/rubocop/cop/legion/helper_migration/direct_knowledge.rb', line 37

def_node_matcher :apollo_global_call?, <<~PATTERN
  (send (const (const nil? :Legion) :Apollo) {:query :ingest} ...)
PATTERN

#apollo_local_call?(node) ⇒ Object



42
43
44
# File 'lib/rubocop/cop/legion/helper_migration/direct_knowledge.rb', line 42

def_node_matcher :apollo_local_call?, <<~PATTERN
  (send (const (const (const nil? :Legion) :Apollo) :Local) {:query :ingest} ...)
PATTERN

#on_send(node) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/rubocop/cop/legion/helper_migration/direct_knowledge.rb', line 46

def on_send(node)
  if apollo_global_call?(node)
    register_global_offense(node)
  elsif apollo_local_call?(node)
    register_local_offense(node)
  end
end