Class: ThemeCheck::Analyzer
- Inherits:
-
Object
- Object
- ThemeCheck::Analyzer
- Defined in:
- lib/theme_check/analyzer.rb
Instance Method Summary collapse
- #analyze_files(files) ⇒ Object
- #analyze_theme ⇒ Object
- #correct_offenses ⇒ Object
-
#initialize(theme, checks = Check.all.map(&:new), auto_correct = false) ⇒ Analyzer
constructor
A new instance of Analyzer.
- #offenses ⇒ Object
- #uncorrectable_offenses ⇒ Object
Constructor Details
#initialize(theme, checks = Check.all.map(&:new), auto_correct = false) ⇒ Analyzer
Returns a new instance of Analyzer.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/theme_check/analyzer.rb', line 4 def initialize(theme, checks = Check.all.map(&:new), auto_correct = false) @theme = theme @auto_correct = auto_correct @liquid_checks = Checks.new @json_checks = Checks.new @html_checks = Checks.new checks.each do |check| check.theme = @theme case check when LiquidCheck @liquid_checks << check when JsonCheck @json_checks << check when HtmlCheck @html_checks << check end end end |
Instance Method Details
#analyze_files(files) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/theme_check/analyzer.rb', line 49 def analyze_files(files) reset ThemeCheck.with_liquid_c_disabled do # Call all checks that run on the whole theme liquid_visitor = Visitor.new(@liquid_checks.whole_theme, @disabled_checks) html_visitor = HtmlVisitor.new(@html_checks.whole_theme) @theme.liquid.each do |template| liquid_visitor.visit_template(template) html_visitor.visit_template(template) end @theme.json.each { |json_file| @json_checks.whole_theme.call(:on_file, json_file) } # Call checks that run on a single files, only on specified file liquid_visitor = Visitor.new(@liquid_checks.single_file, @disabled_checks) html_visitor = HtmlVisitor.new(@html_checks.single_file) files.each do |file| if file.liquid? liquid_visitor.visit_template(file) html_visitor.visit_template(file) elsif file.json? @json_checks.single_file.call(:on_file, file) end end end finish end |
#analyze_theme ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/theme_check/analyzer.rb', line 32 def analyze_theme reset liquid_visitor = Visitor.new(@liquid_checks, @disabled_checks) html_visitor = HtmlVisitor.new(@html_checks) ThemeCheck.with_liquid_c_disabled do @theme.liquid.each do |template| liquid_visitor.visit_template(template) html_visitor.visit_template(template) end end @theme.json.each { |json_file| @json_checks.call(:on_file, json_file) } finish end |
#correct_offenses ⇒ Object
86 87 88 89 90 91 |
# File 'lib/theme_check/analyzer.rb', line 86 def correct_offenses if @auto_correct offenses.each(&:correct) @theme.liquid.each(&:write) end end |
#offenses ⇒ Object
26 27 28 29 30 |
# File 'lib/theme_check/analyzer.rb', line 26 def offenses @liquid_checks.flat_map(&:offenses) + @json_checks.flat_map(&:offenses) + @html_checks.flat_map(&:offenses) end |
#uncorrectable_offenses ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/theme_check/analyzer.rb', line 78 def uncorrectable_offenses unless @auto_correct return offenses end offenses.select { |offense| !offense.correctable? } end |