exceptions: add FormulaClassUnavailableError

This commit is contained in:
Martin Afanasjew 2016-04-16 20:57:03 +02:00
parent feb1e75b61
commit 1ded40a744

View File

@ -68,6 +68,43 @@ class TapFormulaUnavailableError < FormulaUnavailableError
end end
end end
class FormulaClassUnavailableError < FormulaUnavailableError
attr_reader :path
attr_reader :class_name
attr_reader :class_list
def initialize(name, path, class_name, class_list)
@path = path
@class_name = class_name
@class_list = class_list
super name
end
def to_s
s = super
s += "\nIn formula file: #{path}"
s += "\nExpected to find class #{class_name}, but #{class_list_s}."
s
end
private
def class_list_s
formula_class_list = class_list.select { |klass| klass < Formula }
if class_list.empty?
"found no classes"
elsif formula_class_list.empty?
"only found: #{format_list(class_list)} (not derived from Formula!)"
else
"only found: #{format_list(formula_class_list)}"
end
end
def format_list(class_list)
class_list.map { |klass| klass.name.split("::")[-1] }.join(", ")
end
end
class TapFormulaAmbiguityError < RuntimeError class TapFormulaAmbiguityError < RuntimeError
attr_reader :name, :paths, :formulae attr_reader :name, :paths, :formulae