exceptions: add FormulaClassUnavailableError
This commit is contained in:
parent
feb1e75b61
commit
1ded40a744
@ -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
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user