shard-ameba/src/ameba/rule/base.cr
2017-11-14 09:00:15 +02:00

30 lines
491 B
Crystal

module Ameba::Rule
abstract struct Base
include Config::Rule
abstract def test(source : Source)
prop enabled? = true
def test(source : Source, node : Crystal::ASTNode)
# can't be abstract
end
def catch(source : Source)
source.tap { |s| test s }
end
def name
self.class.name.gsub("Ameba::Rule::", "")
end
protected def self.subclasses
{{ @type.subclasses }}
end
end
def self.rules
Base.subclasses
end
end