class PreCommit::PluginsList

Attributes

configured_names[R]
configured_remove[R]

Public Class Methods

new(configured_names, configured_remove, &block) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 10
def initialize(configured_names, configured_remove, &block)
  @configured_names  = configured_names
  @configured_remove = configured_remove
  @class_finder      = block
end

Public Instance Methods

evaluated_names() click to toggle source
# File lib/pre-commit/plugins_list.rb, line 16
def evaluated_names
  evaluated_names_(evaluated_names_pairs).flatten.compact
end
list_to_run() click to toggle source
# File lib/pre-commit/plugins_list.rb, line 20
def list_to_run
  list_to_run_(evaluated_names_pairs).flatten.compact
end

Private Instance Methods

class_and_includes(name, klass) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 55
def class_and_includes(name, klass)
  [ name, klass, klass.respond_to?(:includes) ? find_classes_and_includes(klass.includes) : [] ]
end
class_excludes(klass) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 63
def class_excludes(klass)
  klass.respond_to?(:excludes) ? klass.excludes : []
end
configured_remove_aliases() click to toggle source
# File lib/pre-commit/plugins_list.rb, line 77
def configured_remove_aliases
  @configured_remove_aliases ||= configured_remove.map{|remove|
    list = [remove]
    klass = find_class(remove)
    list += klass.aliases if klass.respond_to?(:aliases)
    list
  }.flatten.compact
end
evaluated_names_(list) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 26
def evaluated_names_(list)
  list.map{|name, klass, includes| [name] + evaluated_names_(includes||[]) }
end
evaluated_names_pairs() click to toggle source
# File lib/pre-commit/plugins_list.rb, line 34
def evaluated_names_pairs
  list = find_classes_and_includes(configured_names)
  excludes = excludes(list).flatten.compact
  list = filter_excludes(list, excludes)
  list = filter_excludes(list, configured_remove_aliases)
  list = filter_callable(list)
  list
end
excludes(list) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 59
def excludes(list)
  list.map{|name, klass, includes| class_excludes(klass) + excludes(includes) }
end
filter_callable(list) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 71
def filter_callable(list)
  list.map{|name, klass, includes|
    (klass.instance_methods.include?(:call) ? [name, klass] : [nil, nil]) << filter_callable(includes)
  }.compact
end
filter_excludes(list, excludes) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 67
def filter_excludes(list, excludes)
  list.map{|name, klass, includes| excludes.include?(name) ? nil : [name, klass, filter_excludes(includes, excludes)] }.compact
end
find_class(name) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 47
def find_class(name)
  @class_finder.call(name)
end
find_classes(list) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 51
def find_classes(list)
  list.map{|name| [name, find_class(name)] }.reject{|name, klass| klass.nil? }
end
find_classes_and_includes(list) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 43
def find_classes_and_includes(list)
  find_classes(list).map{ |name, klass| class_and_includes(name, klass) }
end
list_to_run_(list) click to toggle source
# File lib/pre-commit/plugins_list.rb, line 30
def list_to_run_(list)
  list.map{|name, klass, includes| [klass] + list_to_run_(includes||[]) }
end