shard-ameba/src/ameba/rule.cr

22 lines
377 B
Crystal
Raw Normal View History

2017-10-30 20:00:01 +00:00
module Ameba
abstract struct Rule
abstract def test(source : Source)
def test(source : Source, node : Crystal::ASTNode)
raise "Unimplemented"
end
2017-10-30 20:00:01 +00:00
def catch(source : Source)
source.tap { |s| test s }
end
def name
self.class.name.gsub("Ameba::Rules::", "")
end
2017-11-01 10:49:03 +00:00
def self.rules
{{ @type.subclasses }}
end
2017-10-30 20:00:01 +00:00
end
end