Class: Reek::VerifierExtensionManager

Inherits:
Object
  • Object
show all
Defined in:
lib/reek/verifier_extension_manager.rb

Overview

Manage verifier extention Load new verifier extention and keep the instance, so later when we need the same extention we can recall from cache.

Constant Summary collapse

@@verifier_extensions =
{}

Class Method Summary collapse

Class Method Details

.accepted?(p_extension_scripts, p_context, p_variable) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/reek/verifier_extension_manager.rb', line 13

def self.accepted?(p_extension_scripts, p_context, p_variable)
  p_extension_scripts.each do |extension_script|
    extension = find_or_initiate_extension(extension_script)
    if extension
      accepted, message = extension.accepted?(p_context, p_variable)
      if !accepted
        return false, message
      end
    end
  end

  return true, nil
end

.exists?(p_extension_script) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/reek/verifier_extension_manager.rb', line 39

def self.exists?(p_extension_script)
  @@verifier_extensions.include?(p_extension_script)
end

.find(p_extension_script) ⇒ Object



35
36
37
# File 'lib/reek/verifier_extension_manager.rb', line 35

def self.find(p_extension_script)
  @@verifier_extensions[p_extension_script]
end

.find_or_initiate_extension(p_extension_script) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/reek/verifier_extension_manager.rb', line 27

def self.find_or_initiate_extension(p_extension_script)
  if !exists?(p_extension_script)
    initiate_extension!(p_extension_script)
  end

  return find(p_extension_script)
end

.initiate_extension!(p_extension_script) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/reek/verifier_extension_manager.rb', line 43

def self.initiate_extension!(p_extension_script)
  require p_extension_script

  # detect class name
  extension_class = p_extension_script.split(File::SEPARATOR).
                    last.split(".").first.camelize.constantize
  @@verifier_extensions[p_extension_script] = extension_class.new
end