mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-02 18:32:40 +00:00
30 lines
491 B
Crystal
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
|