2017-10-26 16:46:58 +00:00
|
|
|
require "./ameba/*"
|
2017-11-01 11:10:34 +00:00
|
|
|
require "./ameba/ast/*"
|
2017-11-07 21:50:25 +00:00
|
|
|
require "./ameba/rule/*"
|
2017-11-06 08:38:17 +00:00
|
|
|
require "./ameba/formatter/*"
|
2017-10-26 16:46:58 +00:00
|
|
|
|
|
|
|
module Ameba
|
2017-10-26 17:47:42 +00:00
|
|
|
extend self
|
|
|
|
|
2017-11-06 08:38:17 +00:00
|
|
|
def run(formatter = Formatter::BaseFormatter.new)
|
2017-11-01 17:14:38 +00:00
|
|
|
run Dir["**/*.cr"].reject(&.starts_with? "lib/"), formatter
|
2017-10-26 17:47:42 +00:00
|
|
|
end
|
|
|
|
|
2017-11-06 08:38:17 +00:00
|
|
|
def run(files, formatter : Formatter::BaseFormatter)
|
2017-10-31 20:11:49 +00:00
|
|
|
sources = files.map { |path| Source.new(File.read(path), path) }
|
2017-10-26 19:45:48 +00:00
|
|
|
|
2017-11-06 08:38:17 +00:00
|
|
|
formatter.started sources
|
2017-10-26 19:45:48 +00:00
|
|
|
sources.each do |source|
|
2017-11-06 08:38:17 +00:00
|
|
|
formatter.source_started source
|
2017-10-26 19:45:48 +00:00
|
|
|
catch(source)
|
2017-11-06 08:38:17 +00:00
|
|
|
formatter.source_finished source
|
2017-10-26 17:47:42 +00:00
|
|
|
end
|
2017-11-06 08:38:17 +00:00
|
|
|
formatter.finished sources
|
2017-11-01 15:21:41 +00:00
|
|
|
sources
|
2017-10-26 17:47:42 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def catch(source : Source)
|
2017-11-01 10:49:03 +00:00
|
|
|
Rule.rules.each do |rule|
|
2017-10-26 17:47:42 +00:00
|
|
|
rule.new.test(source)
|
|
|
|
end
|
|
|
|
end
|
2017-10-26 16:46:58 +00:00
|
|
|
end
|